Official

P - Make Testcase Editorial by PCTprobability


\(A\) の度数分布を \(B=(B_1,B_2,\dots,B_N)\) とします。実は、\(B\) を並び替えたとしても Shuffle and Increasing の答えが変わらないことが証明できます。

証明

Shuffle and Increasing を解きます。\(A\) を並び替えて得られる列の集合を \(S\) とします。ここで、\(\displaystyle f_k = \sum_{1 \le i_1 < i_2 < \dots < i_k \le N-1}^{} A_{i_j} < A_{i_{j+1}}\) を満たす \(A\) の個数と定義します。\(g_k\) を元の問題の \(M=k\) のときの答えと定義すると、\(f_k = \sum_{i=k}^{N-1} \binom{i}{k} g_i\) であるため \(f\) を求めると \(g\) を求めることが出来ます。

ここで \(i_1,i_2,\dots,i_k\) を固定すると、\(A\)\(N-k\) 個のサイズの指定された狭義単調増加列に分割する問題を解くことになります。 さて、このように言い換えると \(B\) の度数分布が等しい場合 \(f_k\) が等しいことが分かります。よって、\(B\) を並び替えても答えが変わらないことが証明出来ました。

よって、\(B\) の広義単調増加性を仮定してもよく、その場合 \(N\) を固定すると \(A\) として考えるべきものは \(p(N)\) 通りです。\(A\) を固定すると元の問題は上記をそのまま議論するか、挿入 dp を行うなどで \(\mathrm{O}(N^2)\) で解けるので、テストケースを全て全探索しても \(\mathrm{O}(N^3 p(N))\) で答えとしてあり得るものを列挙できます。

あとは与えられる \(X\) に対して出力を行えばよいです。計算量は \(\mathrm{O}(N^3 p(N) + TN)\) です。

posted:
last update: