树状数组区间加法&区间求和操作


树状数组区间加法&区间求和操作

一般的树状数组解决区间加&单点询问并不复杂

但是要解决区间求和。。。

我们假设原数组是\(\{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