基本平衡树操作
splay的旋转x,就是把它和fa[x]在不违反定义的情况下互换父子关系,左儿子变左父亲,例如。
1 |
|
做区间翻转
由于splay操作可以将任一节点在不违反定义的情形下移动到根,splay树由此多了一些用途,例如维护区间翻转。
https://www.luogu.com.cn/problem/P3391
对于splay操作稍作修改,可以使得某节点上升至任一位置。
然后我们用原序列的下标建树。需要翻转某个区间时,先将l-1splay到根的位置,再将r+1splay到根的右儿子上,现在r+1的左儿子就是要翻转的区间。
对于一棵树,翻转区间就是从上而下交换每个节点的左右儿子,可以打lazy标记,实现log复杂度。
1 |
|