C - Inc, Dec, Xor 解説
by
hiro1729
\(A\) に \(M\) 種類の要素があると仮定すると、それらの和は最小でも \(\displaystyle \frac{M(M-1)}{2}\) であり、少なくともその個数のクエリ 1 が与えられていなければいけません。よって、常に、\(A\) の要素は \(O(\sqrt{Q})\) 種類です。
今までのクエリ 2 の個数を \(m\) とすると、クエリ 2 は、\(A_i\) の値を \(1\) 減らすのではなく、\(m\) をインクリメントして \(A_i\) を \(max(m,A_i)\) で置き換えるという操作に言い換えられます。(このとき、実際の \(A_i\) は \(A_i - m\) です)
したがって、\(A\) に奇数個含まれる要素の集合を管理すると、毎クエリでそれらの xor を計算すればよいので、計算量は \(O(N+Q \sqrt{Q})\) です。
実装例 (C++): https://atcoder.jp/contests/abc470/submissions/78204678
投稿日時:
最終更新:
