lowbit(重要!)
lowbit是用来取出二进制中最低位数的1所代表的二进制的值。
只需要记下代码就行了
int lowbit(int x){
return x&(-x);
}
add单点修改前缀和
将一个树的最子节点修改,则其父节点也需要更改,父父节点也需要修改。x=x+lowbit(x)就是用来取出其父节点的。
void add(int x,int k){
while(x<=n){
sum[x]+=k;
x=lowbit(x)+x;
}
}
query查询前缀和
前缀和
https://blog.csdn.net/johnwayne0317/article/details/84928854
树状数组中的查询原数组前缀和
能查询原数组的前缀和,时间复杂度为O(nlogn)<