警示后人

P2572 [SCOI2010] 序列操作

_cucumber_ @ 2023-12-03 10:15:12

pushdown操作时

要记得

将左儿子与右儿子的其他懒标记清零

例如

a[ls(u)].f1=a[rs(u)].f1=0;
//f1为判断是否全部赋1
a[ls(u)].f0=a[rs(u)].f0=0;
//f0为判断是否全部赋0
a[ls(u)].f=a[rs(u)].f=0;
//f为判断是否反转

但判断反转不能这样做

    if(a[ls(u)].f1==1||a[ls(u)].f0==1)
    {
        a[ls(u)].f1=a[ls(u)].f1^1;
        a[ls(u)].f0=a[ls(u)].f0^1;
    }
    else
    a[ls(u)].f=a[ls(u)].f^1;

    if(a[rs(u)].f1==1||a[rs(u)].f0==1)
    {
        a[rs(u)].f1=a[rs(u)].f1^1;
        a[rs(u)].f0=a[rs(u)].f0^1;
    }
    else
    a[rs(u)].f=a[rs(u)].f^1;

我就因这调了一下午


by OIbishop @ 2024-05-27 13:31:22

谢谢巨老,改完这里就A了


|