树状数组区间加法&区间求和操作
树状数组区间加法&区间求和操作
一般的树状数组解决区间加&单点询问并不复杂
但是要解决区间求和。。。
我们假设原数组是\(\{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\)即可。