フェンウィックツリーのメンテナンス間隔は、クエリ間隔を変更します

シングルポイントの範囲は、クエリを変更するために、我々は、配列の最初と最後での示差増加を使用してマークすることができ、その接頭辞や変更を維持するために木を使用して、配列、すなわち、位置ごとに導出することができます:
\ [A_X = A_X + \ sum_ {i = 1} ^ xb_i
\] 次に、間隔のような動作を実行する間隔内の各点のクエリ間隔によって修飾することができる、すなわち:
\ [\ sum_ {L} = I ^ rA_i = \ sum_ {I = L} ^ R \ sum_ {J
= 1} ^ ib_j + \ sum_ {i = 1} ^ ra_i \] 次にフェンウィックツリー保守使用するように形質転換された質問(\ \ sum_ {i = L } ^ R \ sum_ {jは= } ^ ib_j。1 \)

我々は酒のために、この問題を単純化することができる(\ \ sum_ = {I}。1 ^ rA_i- \ sum_ = {I}。1. 1} ^ {L-a_iを\)

私たちは、する必要があります\(\ sum_ = {I}。1 xA_i ^ \)

式による有意差はのように簡略化することができる:
\ [\ sum_ 1} ^ {X = I(I + 1-X)\タイムズB_i =(Xの+ 1)\ sum_ = {I} 1 ^ xb_i- \。 sum_ {i = 1} ^ XIの
\時間が\] b_i 2つのプレフィックスを、維持します。

おすすめ

転載: www.cnblogs.com/MicDZ/p/Binary-Indexed-Trees.html