//标记永久化
int sum[10001],add[10001];//和,懒标记
//修改
void modify(int k,int l,int r,int x,int y,int v)//当前编号,与范围,需要修改的区间和值
{
if(x>r||y<l)return;
if(x<=l&&y>=r)
{
add[k]+=v;
return;
}
sum[k]+=(min(r,y)-max(l,x)+1)*v;
int mid=(l+r)/2;
modify(k*2,l,mid,x,y,v);
modify(k*2+1,mid+1,r,x,y,v);
}
int query(int k,int l,int r,int x,int y)//查询
{
if(x>r||y<l)return 0;
if(x<=l&&y>=r)return sum[k]+(r-l+1)*add[k];
int mid=(l+r)/2;
int res=(min(r,y)-max(l,x)+1)*add[k];
res+=query(k*2,l,mid,x,y)+query(k*2+1,mid+1,r,x,y);
return res;
}
07-31
605
09-20
09-02