私はこの種の問題に直面したことがあります。約100 万A
のn
要素の配列が与えられたとします。形式のクエリが与えられます。各クエリでは、要素に対して何らかの操作を実行する必要があります。n
1
'p q'
A[p]
A[q]
- この操作は
XOR
、何かのような通常の操作です。A のすべての数値 (インデックス p から q まで) と指定された数値 m の XOR を計算します。例のために-A[p]^m,A[p+1]^m..A[q]^m
タイプ 'p q' の何千ものクエリが与えられた場合、重複する範囲 (例: - ) に対して繰り返し計算を行いますp1<p2<q1<q2
。スペースと時間のトレードオフがある場合、より多くのスペースが必要になる場合でも、作業をより速く行うことを好みます。ですから、私は空間ではなく時間に集中しています。
私の質問は-これらのタイプのクエリを効率的に処理できるデータ構造はありますか(さらにクエリで繰り返される範囲があります)。私が考えることができるのは、前処理を行い、データ構造に保存するようなものです。そして、さらにクエリを受け取ると、更新と処理が行われます。
一部の範囲に関係するクエリの処理に役立つデータ構造を誰かが提案できますか (特に、範囲がさらに広範囲に繰り返される場合)。
- これは、データ構造が必要な元の質問です
-xor演算の最大値