算法学习:树状数组(单点修改,区间修改等)

 

【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 }

 

posted @ 2020-05-13 23:46  rentu  阅读(201)  评论(0编辑  收藏  举报