功能 维护前缀和 单点增加 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)