私はこれを本で見つけました:
Design a data structure for maintaining dynamic sequence x_1, x_2,... , x_n
which provides operations:
Insert(a,i) - inserts a as x_i, indexes from i+1 to n go up by 1
Delete(i) - deletes x_i, indexes from i+1 to n go down by 1
Find(i) - returns element x_i
Sum_even() - returns sum of the elements with even indexes
シーケンスは動的なので、AVLツリーを使用して保持したいと思います。したがって、検索、削除、挿入に標準的なトリックを使用できると思います。このノードをルートとするサブツリーの各ノードサイズを維持するだけです。次に、ツリーを簡単にナビゲートして、O(log n)時間でi番目の要素を見つけることができます。Inorderは私に次のように与えます:x_1、x_2、...、x_n。
しかし、Sum_even()の場合、各ノードに偶数と奇数のインデックスを持つ要素の合計も必要です。挿入または削除中に更新するのは難しいですが。それはどのように機能する必要がありますか、誰かが助けることができますか?