关于一个treap的错误(?)
查看原帖
关于一个treap的错误(?)
527206
wjh2022楼主2023/11/8 15:59

在 这份提交记录中,我写了如下代码:

void zig (int &p) {
	int q = a[p].l;
	a[p].l = a[q].r, a[q].r = p, p = q;
	pushup (p), pushup (a[p].r);
}

void zag (int &p) {
	int q = a[p].r;
	a[p].r = a[q].l, a[q].l = p, p = q;
	pushup (p), pushup (a[p].l);
}

可以发现这里似乎有理论上的问题:zigzig 中应先对 ap.ra_p.r 进行 pushup 再对 apa_p 进行 pushup 。

于是我们发现某位 A 开头 OJ 的站长一直写的是假 treap

然而这份代码过了。

我对其修改,同样 AC 了此题,证明我的改法似乎没有问题。

接着我又对数据加强版进行测试,但是错误的代码又过掉了。

由于 treap 中键值的随机性,本蒟蒻并没有想出合适的卡法,有哪位神犇能证明一下我的猜想的正确性并给出 hack 吗?

2023/11/8 15:59
加载中...