樹狀數組區間加法&區間求和操作


樹狀數組區間加法&區間求和操作

一般的樹狀數組解決區間加&單點詢問並不復雜

但是要解決區間求和。。。

我們假設原數組是\(\{a_i\}\),差分數組\(\{d_i=a_i-a_{i-1}\}\)
所以,我們有式子

\[a_x=\sum_{i=1}^xd_i \]

現在的問題是區間和,也就是求

\[\sum_{i=1}^xa_i \]

如果把每個都拆成上面的形式,那么我們就有

\[Ans=\sum_{i=1}^nd_i(x-i+1) \]

\[Ans=\sum_{i=1}^n(x+1)d_i-\sum_{i=1}^nid_i \]

因此,在維護樹狀數組的時候分別維護兩個值
一個\(d_i\),一個\(id_i\)即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM