线段树模板

线段树模板

Tags
线段树
Last edited time
Jun 19, 2023 12:38 PM
线段树主要用于解决RMQ问题即区间最值查询问题,主要作用是维护区间信息,包括最大值,和等等。它可以对区间进行区间更新,区间查询,单点更新,单点查询。另外当值域区间太大的时候,通常会采用离散化/动态开点的方法构建线段树。

线段树模板(带lazy标记)

动态开点线段树模板

带lazy的动态开点树

值域离散化

线段树可以在可接受的时间范围内解决大部分RMQ问题,但是她也有自己的缺点,例如速度不尽人意,代码量过大等等。所以对于某些特定RMQ问题来说,我们也可以选择其他的数据结构来解决,树状数组就是这样一种数据结构,它总的来说可以说是线段树的一种子集,他可以解决单点修改,区间查询的问题(当然也有某种trick可以修改成区间修改,区间查询,但很少用到),他的优点也很明显,实现简单,代码短。