简介 线段树是啥?能干啥? 维护线段的一个树形结构
可以用来解决一些区间问题
such as 区间修改 区间查询 区间最值啥的
同时也可以支持单点修改,只不过显得有点蠢= 。=
为啥要用线段树? 因为朴素的做区间操作复杂度会爆炸,而线段树的复杂度是O(logn)O(logn)O(logn)
啥是线段? 就是一个区间了= 。=
线段树上的每个点,代表了区间的一段
根节点存储区间[1, n]的信息
每个节点会有两个儿子,将区间从中间断开,分为
[1,(n+1)2],[(n+1)2+1,n][1, \frac{(n + 1)}{2}], [\frac{(n + 1)}{2} + 1, n][1,2(n+1)?],[2(n+1)?+1,n]
直到划分到点[1,1],[2,2]...[1,1],[2,2]...[1,1],[2,2]...
这样就构成了一个二叉树,所以线段树得入门是肥肠简单的
在实现的时候只需要开4倍空间就可以了,因为所有的节点数量不会超过4n
(不会证)
一般在建树的时候会以1为下标开始建树
这样的话左儿子的下标就可以是k + k,右儿子的下标就是k + k + 1
也就是k >> 1和k >> 1 | 1或者k * 2和k * 2 + 1
上例子 简单的模板题
【数据结构初级——没有标记的线段树】#include
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
