题目链接
做法
对于 $ splay $ 操作,模拟发现整棵树的形态不变且深度加一(除了 $ splay $ 的节点的子树深度不变), $ splay $ 的点深度变为 $ 1 $ 。
用线段树维护每个权值深度。
对于操作 $ 1 $ ,用 $ set $ 维护已经存在的节点,新插入的节点父亲一定为它前驱、后继中的一个。
对于操作 $ 2, 3, 4, 5 $ ,模拟 $ splay $ 第一次和最后一次旋转子树操作,用线段树维护深度即可。
时间复杂度 $ O(n \log n) $ 。
1 |
|