对于好久不写线段树的乘法,发现今天重新写线段树2发现了一些搞不懂的东西。
void spread(int l,int r,int k){
if((v[k].mul&&v[k].mul!=1)||v[k].add){
int mid=(l+r)>>1;
v[k<<1].val=(v[k].mul*v[k<<1].val+(v[k].add*(mid-l+1))%mod)%mod;
v[k<<1|1].val=(v[k].mul*v[k<<1|1].val+(v[k].add*(r-mid))%mod)%mod;
v[k<<1].mul=(v[k].mul*v[k<<1].mul)%mod;
v[k<<1|1].mul=(v[k].mul*v[k<<1|1].mul)%mod;
v[k<<1].add=(v[k].add+(v[k<<1].add*v[k].mul)%mod)%mod;
v[k<<1|1].add=(v[k].add+(v[k<<1|1].add*v[k].mul)%mod)%mod;
v[k].mul=1,v[k].add=0;
}
}
对于这个特判,我觉得可有可无,毕竟进入下传懒标记
要是乘法的懒标记大于 1 那么肯定得下传或者是 加法的懒标记大于 0 。所以在这里加与不加这个特判应该都是能过得,但是交上去却过不了,向大佬们询问下原因(●'◡'●)