const int N=200005;
struct Node{
int l,r,sum;
}tree[N];
int a[N];
char opr[10]; //操作数组
void build(int index,int l,int r){ //建树
tree[index].l=l;
tree[index].r=r;
if(l==r){
tree[index].sum=a[l];
return;
}
build(2*index,l,(r+l)/2);
build(2*index+1,(r+l)/2+1,r);
tree[index].sum=tree[2*index].sum+tree[2*index+1].sum;
}
void update(int index,int i,int j){ //更新树
tree[index].sum+=j;
if(tree[index].l==i&&tree[index].r==i){
return;
}
int mid=(tree[index].l+tree[index].r)/2;
if(i>mid){
update(2*index+1,i,j);
}
else{
update(2*index,i,j);
}
}
int query(int index,int i,int j){ //查询
if(tree[index].l==i&&tree[index].r==j){
return tree[index].sum;
}
int mid=(tree[index].l+tree[index].r)/2;
if(i>mid){
return query(2*index+1,i,j);
}
else if(j<=mid){
return query(2*index,i,j);
}
else{
return query(2*index,i,mid)+query(2*index+1,mid+1,j);
}
}
971

被折叠的 条评论
为什么被折叠?



