线段树,顾名思义就是用来存储线段的结构。利用这个,我们可以将一个线段(区间)上的统计问题在log2n时间内解决
这里以n为2的幂的情况做讨论
线段树的层数最多为log2n层:线段树的叶子节点表示的是一个『点』,那么n,每次除以二,显然在第log2n层会变成叶子节点,所以层数只会有log2n层
每个线段可以被分为2log2L条:考虑查询的连续性,如果你在某一层取得两个结点,它们肯定是不相邻的,显然我们取不到同一层的第三个结点,所以每个线段可以被分为2log2L条
Lazy-tag技术:应对区间修改的最好方法? 如果对于一个一个点修改,显然是太慢了,那么我们对于要修改的区间,把他拆分成log条,然后给每条对应的结点打上一个Lazy-tag:"这个区间被统一加上了多少"。当我们在某种情况下访问到了一个还有Lazy-tag的结点,把它的Lazy-tag分享给左右孩子,清零,这样保证了时间复杂度不退化
2016.3.6
时间: 2024-10-14 03:11:43