2025/07/23 东师

平衡树

算法已经比较熟了,直接来一些技巧。

非旋 Treap 的标记系统

可以对子树进行某些操作,比线段树强的是,可以进行一些维护序列结构的操作(如插入,删除,区间翻转等)。

一般而言,我们将序列的第 \(i\) 个元素的信息,放在平衡树中序遍历位置为 \(i\) 的结点上维护,子树=键值值域区间,对于区间定位,我们也可以将所需要的区间分裂出来。

P4008 就是纯粹的板子,插入,删除,查询单点值。

P2042 难点在于最大子段和,但是是和线段树完全同理的区间 \(tag\) 操作。

P7739 考虑到最后的连分数形式,我们可以用矩阵模拟分子分母,操作就都是矩阵了,之后上一棵平衡树维护区间乘积。

总之平衡树还就是个轮子,真正的难点从来不在平衡树。

树套树

这个也不做过多赘述

P1903 这个用莫队过的

P2617 经典问题,动态区间 \(kth\) ,这里考虑用树状数组维护前缀和。修改时,可以只修改logn个位置

查询时,依旧是R位置减去L-1位置,这时候不再是两棵线段树作差,而是log棵线段树与log棵线段树作差;跳的时候,log个节点一起跳到左子树/右子树

主席树

比较好的就是线段树的可差分性

P3302,我们发现线段树这个东西在树上也可以差分,于是维护一下就明白了

posted @ 2025-07-23 21:02  2019yyy  阅读(8)  评论(0)    收藏  举报