lowbit(x)=2^k
int lowbit(int t) { return t & (-t); }
单点更新
x是更改的位置,y是更改的值
void add(int x, int y) { for (int i = x; i <= n; i += lowbit(i)) tree[i] += y; }
求A数组中前x项的和
int getsum(int x) { int ans = 0; for (int i = x; i > 0; i -= lowbit(i)) ans += tree[i]; return ans; }
大佬的解释
https://www.cnblogs.com/hsd-/p/6139376.html