“把每个活跃区间分解为时间线段树的 $O(\log q)$ 个规范节点。节点存放在它所代表的整个时间段内持续活跃的边;一条边可能出现在多个互不重叠的规范节点中,但任一时刻的根叶路径恰好覆盖它一…”
形式陈述 ​
给长度
直觉
线段树把索引区间递归二分,每个节点预存其规范区间的聚合摘要。任意查询区间可分解为
例子与边界
Fenwick 树用二进制低位分解维护前缀可逆聚合,空间和常数更小,但难以表达任意可合并懒标记;稀疏表面向完全静态的幂等查询,预处理后可常数回答 RMQ,却不支持在线更新。线段树以更大常数换取通用区间分解和更新能力。
区间和、最小值、最大子段信息都可通过设计合并规则维护。合并必须结合;非交换运算还必须保持左右顺序。普通线段树不自动支持任意区间更新。
数组
区间和差可用前缀和静态回答,但线段树支持在线更新。聚合若不结合,节点合并次序会影响结果;非交换操作仍可使用,只要严格保留左右顺序。懒惰区间更新还要求更新标签能复合,并且标签作用与节点摘要、区间长度之间有可在
推论与应用
数组提供叶序,二叉树提供区间分解,幺半群提供结合聚合;懒惰传播在满足上述标签条件时增加区间更新。在线 RAM 中,标准静态布局占
线段树的节点摘要也是树增强思想,但索引骨架固定,不是按键旋转的搜索树。重链分解把树路径拆成若干数组区间后调用线段树;持久化数据结构则通过路径复制保留历史根。
树套树可在每个外层节点再维护一套内层索引,服务二维正交查询,但空间和更新代价必须把两层同时计入。线段树分治处理的是另一条轴:它把对象的有效时间段分配给时间树上的规范节点,DFS 进入、退出节点时配合可回滚结构回答离线动态问题。
区间树存储的是一组几何区间并回答 stabbing/intersection 查询,不能与“把数组区间递归分解”的本页结构同名互换。
参考资料
- OI-Wiki contributors, OI-Wiki (2026), segment tree.
- cp-algorithms contributors, Algorithms for Competitive Programming (2026), segment tree.
- Jon Louis Bentley, “Solutions to Klee’s Rectangle Problems,” Carnegie Mellon University technical report, 1977.