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

时间:2021-07-25 14:48:29

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

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

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

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