树状数组——模板
#include<cstdio>
#include<cstring>
#define maxn 1000001
int c[maxn];
int a[maxn];
int lowbit(int x){
return x&(-x);
}
int ini(){ //初始化
for(int i=1;i<=maxn;i++){
for(int k=i;k>=i-lowbit(i);k++){
c[i]+=a[k];
}
}
}
void update(int p,int val){ //单点更新 循环:c[i]—> c[ i+lowbit(i) ] (父节点)
for( int i=p; i<=maxn ;i+=lowbit(i) ){
c[i]+=val;
}
}
int getsum(int p){ //区间和 循环:sum+=c[i]; i=i-lowbit(i)
int sum=0;
while(p){
sum+=c[p];
p=p-lowbit(p);
}
return sum;
}

浙公网安备 33010602011771号