线段树update理解求助
查看原帖
线段树update理解求助
339568
TonviaSzt楼主2022/8/15 09:27

为什么

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);

就错了?

2022/8/15 09:27
加载中...