功能
维护前缀和
单点增加
code
查询[1 ~ x]的前缀和
int ask( int x )
{
int ans = 0;
for( int i = x; i; i -= lowbit( i ) )
ans += tr[i];
return ans;
}
单点增加 a[x] + y
void add( int x, int y )
{
for( int i = x; i <= n; i += lowbit( i ) )
tr[i] += y;
}
扩展
把原数组的差分数组存入树状数组中
查询x的值
区间[l ~ r] + d
add( l, d )
add( r + 1, -d)



京公网安备 11010502036488号