タイトル#
長さ $n$ の列が与えられ、第 $i$ 番目の要素のインデックスは $i$、値は $a_i$
現在 $q$ 回の操作があり、毎回区間 $[l,r]$ が与えられ、その区間の要素の合計を求め、区間内のすべての要素の値を $0$ に変更する
すべての操作の答えの排他的論理和を出力する必要があります
$n, q$ が非常に大きいため、別の読み込み方法を提供します
$z$ が与えられ、その型は unsigned int
であり、$n$ 回 $gen ()$ 関数を呼び出して列を取得し、さらに $2n$ 回呼び出して各操作の $l,r$ を取得する必要があります。具体的なコードは以下の通りです:
$40%$ のデータに対して、$n, q\le 10^6$ を満たします
$100%$ のデータに対して、$n, q\leq 10^7$ を満たします
解答#
私は試験中に 1 時間考えても思いつかなかったことを教えません
セグメントツリーを考え始めましたが、データ範囲を見て、完全にタイムアウトしました
その後、どうすればよいかわからなくなりました
クエリが終わったら削除するので、数をクエリした後はもう気にしなくて良いです
気にしない数を管理するために、最初に $n$ 個の並列集合ツリーを開くことを考えます
クエリの際に、ついでに管理します($l$ から $r$ の fa を fa[r + 1]
に指し示します)
(実際にはリストを使って管理しても通過できます)
私は本当に下手です