E - Sequence Growing Hard
Editorial
/
Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 1200 点
問題文
次の条件を満たす数列の組 (A_0,A_1,...,A_N) としてありうるものの個数を M で割ったあまりを求めてください。
- 全ての i(0\leq i\leq N) に対し、A_i は 1 以上 K 以下の整数からなる長さ i の数列である
- 全ての i(1\leq i\leq N) に対し、A_{i-1} は A_i の部分列である。すなわち、ある 1\leq x_i\leq i が存在し、A_i の x_i 文字目を取り除いてできる数列が A_{i-1} に一致する
- 全ての i(1\leq i\leq N) に対し、A_i は辞書順で A_{i-1} より大きい
制約
- 1 \leq N,K \leq 300
- 2 \leq M \leq 10^9
- N,K,M は整数である
入力
入力は以下の形式で標準入力から与えられる。
N K M
出力
数列の組 (A_0,A_1,...,A_N) としてありうるものの個数を M で割ったあまりを出力せよ。
入力例 1
2 2 100
出力例 1
5
以下の 5 つの組が条件を満たします。
- (),(1),(1,1)
- (),(1),(1,2)
- (),(1),(2,1)
- (),(2),(2,1)
- (),(2),(2,2)
入力例 2
4 3 999999999
出力例 2
358
入力例 3
150 150 998244353
出力例 3
186248260
Score : 1200 points
Problem Statement
Find the number of the possible tuples of sequences (A_0,A_1,...,A_N) that satisfy all of the following conditions, modulo M:
- For every i (0\leq i\leq N), A_i is a sequence of length i consisting of integers between 1 and K (inclusive);
- For every i (1\leq i\leq N), A_{i-1} is a subsequence of A_i, that is, there exists 1\leq x_i\leq i such that the removal of the x_i-th element of A_i would result in a sequence equal to A_{i-1};
- For every i (1\leq i\leq N), A_i is lexicographically larger than A_{i-1}.
Constraints
- 1 \leq N,K \leq 300
- 2 \leq M \leq 10^9
- N, K and M are integers.
Input
Input is given from Standard Input in the following format:
N K M
Output
Print the number of the possible tuples of sequences (A_0,A_1,...,A_N), modulo M.
Sample Input 1
2 2 100
Sample Output 1
5
Five tuples below satisfy the conditions:
- (),(1),(1,1)
- (),(1),(1,2)
- (),(1),(2,1)
- (),(2),(2,1)
- (),(2),(2,2)
Sample Input 2
4 3 999999999
Sample Output 2
358
Sample Input 3
150 150 998244353
Sample Output 3
186248260