我发现很多人使用x += x & (-x)
,x -= x & (-x)
来解决区间树问题(在实现数据结构如段树、二叉索引树等时)。
你能解释一下这个等式是什么意思吗?
例如:
void update(int m, int x) {
m++;
while (m < N) {
t[m] = t[m] + x;
m += m & -m;
}
}
int query(int m) {
int result= 0;
m++;
while (m > 0) {
result = result + t[m];
m -= m & -m;
}
return result;
}