例题 https://leetcode-cn.com/problems/range-sum-query-2d-mutable/
一般的树状数组tree[i]记录的是以i为右端点,长度为lowbit(i)的区间和,实现单点修改区间查询。
树状数组也可以实现矩阵上的单点修改区间查询
int lowbit(int x) {
return x & -x;
}
void modify(int x0, int y0, int val) {
for (int x = x0; x <= n; x += lowbit(x)) {
for (int y = y0; y <= n; y += lowbit(y)) {
tree[x][y] += val;
}
}
}
long query(int row, int col) {
long ret = 0;
for (int x = row; x > 0; x -= lowbit(x)) {
for (int y = col; y > 0; y -= lowbit(y)) {
ret += tree[x][y];
}
}
return ret;
}


京公网安备 11010502036488号