是数据太水还是我很正确
查看原帖
是数据太水还是我很正确
87064
ducati楼主2021/1/26 16:32
//pushup: update the size of a node
//ducati loves splay
void Rotate(int x){
	int y=f[x],z=f[y],t=ge(x);
	pushdown(x),pushdown(y);
	tree[y][t]=tree[x][t^1],f[tree[y][t]]=y,tree[x][t^1]=y,f[y]=x,f[x]=z;
	if (z)  tree[z][(tree[z][1]==y)]=x;
	pushup(x),pushup(y);
}

上面是Splay旋转操作的代码。

这里有一个非常致命的问题: pushup(x),pushup(y)pushup(x),pushup(y)的顺序。经过旋转后,此时xxyy的父节点,先更新xx后更新yy会导致xx的数据错误。

结果我A了……不信看提交记录……

所以是数据太水还是我很正确?

2021/1/26 16:32
加载中...