警示后人
查看原帖
警示后人
822979
CowboyStyle楼主2023/12/3 10:15

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;

我就因这调了一下午

2023/12/3 10:15
加载中...