window.cnblogsConfig = {//可以放多张照片,应该是在每一个博文上面的图片,如果是多张的话,那么就随机换的。 homeTopImg: [ "https://cdn.luogu.com.cn/upload/image_hosting/xkzro04i.png" ], }

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\) 的查询,及二分。合起来就是 线段树二分。

性能分析

  1. Time: \(\mathrm{O}(n\log n+q\log^2 n)\) / Memory: \(\mathrm{O}(n)\)
  2. 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)\)(优化后)

代码

posted @ 2025-08-03 21:50  TigerTanWQY  阅读(29)  评论(0)    收藏  举报