かわらにかわらは割れない

プログラミングとかいろいろ

CF #197 D: Xenia and Bit Operations (339D)

コードが汚いのはご愛嬌。

問題概要

2^n個の要素を持った数列 a が与えられます。a_1\ {\rm or}\ a_2, a_3\ {\rm or}\ a_4, \cdots として新しい数列 a' を作り、その新しい数列に対してa'_1\ {\rm xor}\ a'_2, a'_3\ {\rm xor}\ a'_4, \cdots として新しい数列 a''を作ります。このように{\rm or}{\rm xor}を交互に用いて新しい数列をどんどん作っていくと最終的に1つの値が求まります。クエリ「a_pbに変える」がq個与えられるので、各クエリ実行後に得られる値を出力してください。

解答

セグ木を貼った。深さで{\rm or}{\rm xor}のどっちを使うか変わるが、更新時は{\rm or}{\rm xor}を交互にやっていくだけ。セグ木のいい感じの練習台な気がする問題。

提出:
https://codeforces.com/contest/339/submission/60066703