兔队线段树
这是一种使用线段树维护前缀最值的算法。
我们从楼房重建这道题入手。
给定长为 的序列 ,初始全为 ,支持单点修改。
定义 。
每次查询求满足 且 的 的个数。
查询的条件可以等价理解为 合法意味着 是前缀严格最大值。
我们使用线段树维护,对于每个区间,保存如下信息。
- 区间内的 最大值。
- 不考虑区间外信息的情况下,区间内的答案。
设其分别为 与 , 是好维护的,重点在于 如何维护。设现在要从 的子树转移到 ,如果用左右子树的信息直接相加显然是错的,因为没有考虑左子树对右子树的影响。左子树的信息是可以直接继承的,右子树利用左子树的信息重新计算即可。
1 | int calc(int u,int l,int r,ld pre){ |
- 标题: 兔队线段树
- 作者: Gavin
- 创建于 : 2026-07-20 19:43:00
- 更新于 : 2026-07-20 19:43:00
- 链接: https://gavin-blog.pages.dev/2026/兔队线段树/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。