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