MX-2025 盖世计划 C 班 Day 1 复盘
概览
线段树全家桶:一般的线段树、带 lazy_tag 的线段树、线段树二分、动态开点线段树、可持久化线段树。
优点
- 支持在线
- 高效兼顾修改&查询
- 代码简洁(?
细节
- 空间要开 \(4\) 倍,动态开店要开 \(n\log V\)(\(V\) 为值域)
- tag 合并要仔细考虑优先级
- tag 下传不要搞错顺序
一般的线段树
例题
适用场景
单点修改、区间查询。
性能分析
Time: \(\mathrm{O}((n+q)\log n)\) / Memory: \(\mathrm{O}(n)\)
代码
带 lazy_tag 的线段树
例题
适用场景
区间修改、单点/区间查询。
性能分析
Time: \(\mathrm{O}((n+q)\log n)\) / Memory: \(\mathrm{O}(n\log n)\)
代码
线段树二分
例题
两种理解
- 二分答案+线段树
- 线段树上的二分
这里解释第二种(第一种都能理解吧……)
正常来说,线段树的查询有左右两个端点。但经过一些玄学修改,我们可以处理第一个大于等于 \(L\) 的查询,及二分。合起来就是 线段树二分。
性能分析
- Time: \(\mathrm{O}(n\log n+q\log^2 n)\) / Memory: \(\mathrm{O}(n)\)
- Time: \(\mathrm{O}((n+q)\log n)\) / Memory: \(\mathrm{O}(n)\) 优于第一种
代码(暂无)
动态开点线段树
例题
特点 / 适用场景
动态开点可以处理一些离散化处理不了的线段树问题 ---中译中---> 支持在线
空间要开 \(\log V\) 倍(\(V\) 为值域)。
性能分析
Time: \(\mathrm{O}((n+q)\log n)\) / Memory: \(\mathrm{O}(n\log V)\)
可持久化线段树
例题
适用场景
需要维护历史版本(当然不能暴力出奇迹)
性能分析
Time: \(\mathrm{O}((n+q)\log n)\) / Memory: \(\mathrm{O}(n\log n)\)(优化后)

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号