为什么
void update(int id,int l,int r,int x,int y,int k){
if(x<=l&&r<=y){
lazy[id]+=k;
minv[id]+=k*(r-l+1);
return ;
}
pushdown(id,l,r);
int mid=(l+r)>>1;
if(x<=mid) update(id<<1,l,mid,x,y,k);
if(y>mid) update(id<<1|1,mid+1,r,x,y,k);
pushup(id);
}
没有问题,但是将递归改为
if(l<=x&&x<=mid) update(id<<1,l,mid,x,y,k);
if(mid<y&&y<=r) update(id<<1|1,mid+1,r,x,y,k);
pushup(id);
就错了?