Skip to content

树状数组的区间加区间查询操作 ​

对数组 A1…n 进行区间加和区间查询操作,令 Di=Ai−Ai−1,即

∑j=1iDj=Ai

区间查询 S(l,r) 可以差分为前缀和 S(r)−S(l−1),则有

S(x)=∑i=1xAi=∑i=1x∑j=1iDj=∑j=1xDj(x−j+1)=(x+1)∑j=1xDj−∑j=1x(j×Dj)

因此,求答案只需维护 D 的前缀和以及 i×D 的前缀和。当对 Al…r 区间加时,只有 Dl 和 Dr+1 发生了变化,转化为单点加单点查询。

最近更新