Official

D - I Wanna Win The Game Editorial by kort0n


最下位ビットとそれ以外のビットに分けて考えると、「それ以外のビット」の部分を入力の小さい同じ問題に帰着させることが出来ます。具体的には、

\(dp_i: \)\(xor\)\(0\) となる、総和が \(i\) の非負整数列の数

とすると、

\[dp_i = \begin{cases} \sum_{j} \binom{N}{2*j}dp_{\left(i - 2j\right) / 2} & i が偶数のとき \\ 0 & iが奇数のとき \end{cases} \]

という漸化式が成立します。この漸化式に従って動的計画法のテーブルを昇順に埋めることで、二項係数の前計算の時間を除いて、この問題を \(O(M^2)\) の時間計算量で解くことが出来ます。

posted:
last update: