玄学写法
查看原帖
玄学写法
49093
_sys楼主2020/12/7 14:47

cut 函数中,正确的写法如下:

void cut(node * x, node * y)
{
	split(x, y);
	if (findroot(y) != x || y -> fa != x || y -> son[0] != NULL) return ;
	y -> fa = x -> son[1] = NULL;
	update(x);
}

而如果我们写成这个样子

void cut(node * x, node * y)
{
	split(x, y);
	if (findroot(y) != x || y -> fa != x || y -> son[0] != NULL) return ;
	y -> fa = NULL;
}

也是对的。

为什么呢?我们考虑所有操作最终都会归于 splay。而 splay 是从下往上进行的,找不到 fa 就会退出。所以我们仅仅是“认子不认父”也能 AC。。。

2020/12/7 14:47
加载中...