rt.
我准备用 vector 来动态开 Treap 的节点,然后写出两份代码,且这两份代码只有下面不同:
AC:
Treap() {
tree.resize(114514);
p=rt=0;
}
int new_node(int val) {
tree[++p]=node(val,0,0,rd(),1,1);
return p;
}
WA:
Treap() {
tree.clear();
tree.push_back(node());
p=rt=0;
}
void init() {
tree.clear();
tree.push_back(node());
p=rt=0;
}
int new_node(int val) {
tree.push_back(node(val,0,0,rd(),1,1));
return ++p;
}
其中下面部分最开始 push_back 一个空节点进去是因为我的下标从 1 开始。
然后就似了,求助为什么/kel
完整代码 & hack 数据见:https://www.luogu.com.cn/paste/tit620e5。