树状数组模板
int lowbit(int x){
return x & -x;
}
struct fenwick{
int n;
vector<int> tr;
fenwick(int n_){
init(n_);
}
void init(int n_){
tr.resize(n_+10,0);
n=n_;
}
void add(int x,int c){
for(int i=x;i<=n;i+=lowbit(i)) tr[i]+=c;
}
void add(int l,int r,int c){
for(int i=l;i<=n;i+=lowbit(i)) tr[i]+=c;
for(int i=r+1;i<=n;i+=lowbit(i)) tr[i]-=c;
}
int sum(int x){
int res=0;
for(int i=x;i>=1;i-=lowbit(i)) res+=tr[i];
return res;
}
int sum(int l,int r){
if(l>r) return 0;
return sum(r)-sum(l-1);
}
};
浙公网安备 33010602011771号