H - Xor Sigma Problem 解説 by kyopro_friends


bitごとに分けて考えることで、\(A_i \in\{0,1\}\) の問題が解ければ十分です。

\(A_L\oplus \ldots\oplus A_R\)\(f(L,R)\) と表すことにします。\(L=R\) のケースも含めて和を取り、最後に \(\mathrm{sum}(A)\) を引くことにします。

\(\mathrm{dp}[i][c]=|\{j \mid f(j,i)=c\}|\) と定めると、\(\mathrm{dp}[i][c]=\mathrm{dp}[i-1][c\oplus A_i]+(c=A_iなら1)\) となることから、このdpテーブルは \(O(N)\) で埋めることができます。

求める答えは \(\sum_i \mathrm{dp}[i][1]\) であり、これはdpテーブルから直ちに計算できます。

投稿日時:
最終更新: