Official

F - Range Xor Query Editorial by QCFium


\(a \oplus b\)\(0\) を単位元としてもち、結合法則を満たすのでセグメント木を使うことで高速に処理できます。 計算量は \(O((N + Q) \log (N))\) です。
また、\(f(i) = A_1 \oplus A_2 \oplus A_3 \oplus \dots \oplus A_i(f(0) = 0\) とする\()\) さえ高速に計算できれば、xor の性質により答えは \(f(Y_i) \oplus f(X_i - 1)\) となるので Fenwick tree (Binary indexed tree) を使うこともできます。  

Fenwick tree やセグメント木はAtCoder Library (ACL) にも実装されているので、これを使うと実装量を減らせます。

posted:
last update: