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テーブルから直ちに計算できます。
投稿日時:
最終更新: