【学习笔记 / 数据结构】线段树进阶
扫描线
【洛谷模板题传送门】
思想
以一条法线从下往上扫描整个图形,图形面积并即为
图示
如图:
从头开始扫。
扫到第二条,计算浅蓝色部分面积。
扫描线当前长度可以用线段树优化(区间修改)。
动态开点
【例题】:HDU6183 - Color it!
题意:给出以下操作:
数据保证
思路
开
因为空间会爆炸,所以不能常规开线段树,用到什么区间就开那个区间的内存即可。
可持久化线段树 / 主席树
【洛谷模板题传送门】
主席树即为可持久化权值线段树,即在保留历史版本的前提下更新线段树,分析可得,修改的节点是一条链且必然产生新的根,未修改的连到过去版本即可。
使用动态开点。
大概长这样:
第
区间查询时,运用前缀和的思想确定左右区间,递归求解。
所有笔记的代码:
- https://www.luogu.com.cn/paste/2lwa55o2
画图软件:
-
\text{Microsoft Whiteboard}
编辑器:
-
\text{CP Editor / Dev-C++}