线段树

势能线段树

有些时候区间修改不太好打标记,例如区间 chkmax,区间 and/or,区间开根 等等,但是当区间满足一定条件时,我们就可以把这些棘手的操转化为简单的操作,如区间加等

所以我们可以在当前区间不满足合适的修改条件时,暴力往左右子树递归,直到可以修改为止

这种线段树的复杂度通常通过势能分析证明,所以称其为势能线段树

吉司机线段树就是一种常见的势能线段树,通过将节点势能定义为其区间中的颜色数,我们发现当从一个节点暴力往下递归的时候,操作结束之后,这个点的势能一定至少减少 \(1\),从而使复杂度得到保证

其实就是常用的 颜色段均摊,做区间推平的时候,可以暴力递归直到区间内所有数都相同

来看一道题

「雅礼集训 2018 Day7」A

首先我们可以拆位,那么 and 和 or 就变成了对一些位,区间覆盖成 0/1

由于我们还要维护最小值,区间覆盖并不能直接打标记,但是考虑当区间内这一位上全部为 0/1 时,区间覆盖就相当于区间 \(\pm 2^b\),容易维护对最小值的影响,所以颜色段均摊即可

但是这样写常数太大,我们不用分别对每一个位处理,可以打包进行,假设我们现在要把 \(k\) 二进制中为 \(1\) 的位在区间里覆盖成 \(v\),那么根据颜色段均摊,如果区间内所有数在 \(k\) 所对应的位上全部相同(即所有 \(a_i \cap k\) 都一样,或者说 \(k \subseteq \bigcap_{i=l}^r a_i\)),那么本次操作对所有数的影响都一样,我们可以把操作转化为区间加,直接修改最小值

否则,操作结束之后一定会有一个二进制位被推平,颜色数 \(-1\),势能 \(-1\),抵消了访问这个节点的代价

尝试证明

设节点势能 \(\Phi(x)\) 节点区间内不一样的位的个数,\(\Phi_i\) 为第 \(i\) 次操作后的势能,\(\Delta \Phi_i^-\) 表示减小势能的绝对值,\(\Delta \Phi_i^+\) 表示增加的势能

我们考虑将操作代价放缩为势能,以得到一个上界

考虑每次先将区间拆到 \(O(\log n)\) 个节点上,会访问 \(O(\log n)\) 个节点,操作结束之后,这些节点的势能可能增加,上界为 \(\Delta\Phi_i^+ \le O(w \log n)\)

然后开始暴力递归,称递归结束的点为叶子节点,则叶子节点势能不变,其余节点势能至少 \(-1\),那么有访问节点数 \(c_i \le 2 \Delta\Phi_i^-\)

所以单次操作代价 $$\le O(\log n) + 2 \Delta\Phi_i^-$$

总代价 $$\le O(m\log n) + 2 \sum\Delta\Phi_i^-$$

而势能变化量

\[\sum_{i=1}^m \Delta\Phi_i^+ - \sum_{i=0}^m \Delta\Phi_i^- = \Phi_m - \Phi_0 \ge -nw \]

所以有

\[\sum_{i=0}^m \Delta\Phi_i^- \le \sum_{i=1}^m \Delta\Phi_i^+ + nw \le O(mw\log n) + nw \]

带入上式,得到复杂度上界 \(O(mw \log n)\)

标记永久化

当下传代价较高时,我们可以选择标记永久化,查询的时候考虑根到节点的所有标记

注意这时节点的信息依然是只考虑子树内标记影响的信息,但是由于没有下传,所以 pushup 的时候要考虑到该节点的标记

常见情况如可持久化线段树(TTM)、树套树等等

注意这样要求标记具有交换律,例如区间覆盖需要通过时间戳转化为取路径上 max

P3437 [POI 2006] TET-Tetris 3D

线段树套线段树

标记没法下传,节点也没办法 pushup

解决方法:

  1. 标记永久化,由于是二维的,开一棵标记线段树表示每个位置的最大标记
  2. 没法 pushup 就在修改的时候直接在祖先节点上修改

线段树二分

通过线段树上维护的信息判断是否有解,再递归地再左右儿子中寻找答案,常用于寻找区间内满足条件的第一个点或子区间且每次询问的条件中带有参数或是有区间操作

AcWing 261 旅馆

CF2145E Predicting Popularity

线段树分治

通过对时间轴分治,将操作离线,对于难以删除但支持撤销的操作/数据结构,可以模拟出删除的效果,例如并查集,李超树等等

主席树

静态区间 kth,区间内在 \([a, b]\) 之间的数的个数(在线静态二维数点)

区间颜色数可以通过考虑出现位置转化成 区间 \(\le k\) 个数

posted @ 2026-06-25 09:32  zhm0725  阅读(9)  评论(0)    收藏  举报