无旋Treap大法好 原理? 是一棵二叉查找树: 一个节点左子树权值都比他小,右子树权值都比他大 所以可以维护序列(以位置为权值),或数值(以数值为权值) 是一个堆: 每个节点除了上述提到的权值外,还有一个随机生成的给堆用的优先级 好像有了随机+堆就可以使树高均摊\(O(log_2^n)\)?,怎么证明呢? 用分裂和合并两个操作为基础,写起来会比较清真 基本操作 结构体的组成 struct Treap { LL val, pri; //数值, 优先级 int cnt, siz, ch[2]; /…