极好的博客讲解
lowbit函数
int lowbit(int x) {
return x & (-x);
}
修改以及建树的函数
void add(int x, int k) {
for (int i = x; i < N; i += lowbit(i))tr[i] += k;
}
一点要注意建树的数据范围,根据题目的要求来确定建树的范围。
查询函数
int query(int x) {
int res = 0;
for (int i = x; i; i -= lowbit(i))
res += tr[i];
return res;
}