Tim0509 @ 2023-03-25 16:44:37
注意你在更新的时候
如果已经到达了完全覆盖的区间,请先pushdown,然后修改标记
如:
void update(ll p,ll ql,ll qr,ll opt){
ll l=tr[p].l,r=tr[p].r;
if(l>=ql&&r<=qr){
pushdown(p);//注意这里
//注意这里
//注意这里
//注意这里
if(opt==0){
//赋值为0
tr[p].ri1=tr[p].le1=tr[p].sum1=tr[p].val1=0;
tr[p].ri0=tr[p].le0=tr[p].sum0=tr[p].val0=tr[p].len;
tr[p].tag1=0;
tr[p].tag2=0;
}
if(opt==1){
//赋值为1
tr[p].ri0=tr[p].le0=tr[p].sum0=tr[p].val0=0;
tr[p].ri1=tr[p].le1=tr[p].sum1=tr[p].val1=tr[p].len;
tr[p].tag1=1;
tr[p].tag2=0;
}
if(opt==2){
//取反
swap(tr[p].le0,tr[p].le1);
swap(tr[p].ri0,tr[p].ri1);
swap(tr[p].val0,tr[p].val1);
swap(tr[p].sum0,tr[p].sum1);
tr[p].tag2=!tr[p].tag2;
}
return;
}
………………//继续递归
}
by zzZZzzZzzZzzzzzZzz @ 2023-07-13 22:34:46
感谢
by QWQ_SenLin @ 2023-07-19 13:44:42
感谢 30->100
by ESTZ @ 2023-08-20 13:00:47
感谢大佬
by Greenzhe @ 2023-10-02 18:59:23
感谢 0->10