线段树
线段树学习笔记
普通线段树
线段树运用了二分的思想,将区间 \([l,r]\) 分为\([l,mid]\) 和 \([mid+1,r]\),合并起来就是 \([l,r]\) 的信息。
zkw 线段树
动态开点线段树
可持久化线段树
线段树的合并和分裂
易错点
-
每一次,每一种修改都要写
pushup
, 除了建树其他都要写pushdown
(如果有懒标记的话)。 -
空间要开的足够大,特别是可持久化线段树,线段树合并。
-
在动态开点线段树中,如果采用的是带引用地址的的写法,记得每当有新建节点的操作时都引用变量。
-
递归过程中要保持答案区间 \([l,r]\) 不变,不要手滑写成 \([l,mid+1]\) 或 \([mid+1, r]\)。