D - Sum of SCC Editorial by noimi


\(O(N^3)\) で解くことができます。 公式解説の分解を用います。 つまり、 \([N]\) の分割 \(A, B\) であって、\((a, b) \in A \times B\) はすべて、\(a \rightarrow b\) と向きつけられているようなものを数える方針です。

\(|A| = L\) を固定したときの \(x \rightarrow y (x < y)\) の数の母関数を考えます。この辺を以降「良い辺」と呼びます。

\(A, B\) 内の向きつけは自由なので、\((1 + x) ^ {L(L-1)/2 + (N-L)(N-L-1)/2}\) です。

一方で、A, B を合体させる際は要素の順番の大きさに気を配る必要があります。 AB 間の良い辺の数は、\(L\) 個の 1, \(N-L\) 個の 0 を並べた配列の転倒数に対応するので、これは \(q\)-二項係数 \(\binom{N}{L}_q\) であらわすことができます。

よって、

\([q^M] \sum_{L=0}^{N-1} (1+q)^{L(L-1)/2+(N-L)(N-L-1)/2} \binom{N}{L}_q\)

が求める答えです。 ところで、\(q\)-binomial の表式は

\(\binom{N}{L}_q = \dfrac{(1-q)(1-q^2)\ldots(1-q^N)}{(1-q)\ldots(1-q^L) (1-q) \ldots (1-q^{N-L})}\)

であったので、 \(\binom{N}{L + 1}_q = \binom{N}{L}_q \dfrac{1-q^{N-L}}{1-q^{L+1}}\)

の等式が成り立つ。

よって、\(\binom{N}{i}_q\) の列挙は全体で \(O(N^3)\) ですることができる。 これにより、

\([q^M] \sum_{L=0}^{N-1} (1+q)^{L(L-1)/2+(N-L)(N-L-1)/2} \binom{N}{L}_q\)

\(= \sum_{L=0}^{N-1} \sum_{i=0}^{L(N-L)} [q^i] \binom{N}{L}_q \binom{L(L-1)/2 + (N-L)(N-L-1)/2}{M-i}\)

と求めることができる。

実装: (https://atcoder.jp/contests/arc163/submissions/59329813)

\(N = 1000\) でも 2 秒以内に求解できます。

posted:
last update: