为什么我的pushdown这样写也能ac?
查看原帖
为什么我的pushdown这样写也能ac?
206423
焚魂楼主2024/9/13 11:42

RT,我的理解是如果先加再修改那么就得把add清零再修改,如果是先修改再加就得先下放修改的懒标记后再加,但是我的代码:

void pushdown(long long k,long long l,long long r,long long mid) {
	if(mo[k] != -1e18) {						//mo表示区间修改的懒标记 
		mod(k*2,l,mid,mo[k]);
		mod(k*2+1,mid+1,r,mo[k]);
		mo[k] = -1e18;
	}
	if(add[k]) {								//add表示区间加的懒标记 
		jia(k*2,l,mid,add[k]);
		jia(k*2+1,mid+1,r,add[k]);
	}
	add[k] = 0;
}

貌似并不能很好的满足这一逻辑却ac了,是我的理解出问题了还是数据的问题QAQ

2024/9/13 11:42
加载中...