算法学习:树状数组(单点修改,区间修改等)
【lowbit】
1 #define lowbit(x) x&(-x)
【单点修改】
1 void add(int pos, int k) 2 { 3 while (pos <= n) 4 { 5 tree[pos] += k; 6 pos += lowbit(pos); 7 } 8 }
【区间询问】
1 ll sum(int pos) 2 { 3 ll ret = 0; 4 while (pos) 5 { 6 ret += tree[pos]; 7 pos -= lowbit(pos); 8 } 9 return ret; 10 }