【清明】线段树
来源:互联网 发布:mac的ps和windows 编辑:程序博客网 时间:2024/06/11 17:47
树形数据结构//废话
这里说普通线段树,并不包括zkw线段树
变体点树之类的也不涉及了
线段树是平衡二叉树
支持区间/单点查询,区间/单点修改
时间复杂度为O(logN)
空间复杂度2N
所以有时候需要离散化压空间√
图片来自百度百科
线段树嘛顾名思义就好
每个线段被层层分解,端点便是区间边界
然后就可以搞事情><
要注意节点编号和线段端点是两个概念
对于编号为n的节点,左儿子是2n,右儿子是2n+1
相当好用的性质
和图上一样,一层一层的树
修改的话一层一层是不是很麻烦?
所以有了lazy标记
lazy,懒惰,也就是给修改的区间打一个标记,证明我想修改它
标记是给儿子用的,什么时候用到了,什么时候标记下放给儿子们
下放时分左右两部分,二分思想
线段树是相当好用的数据结构
就是写起来好像有点长
代码模板点这里↓
http://blog.csdn.net/Loi_Shirley/article/details/51988188
其他的修改类型,比如开根啊什么的,记住下放标记就好
适用类型一般比较明显,看数据范围&&满足区间加法
就是多次动态查询&&修改的题
比如行星序列和宠物收纳所,之类的
//静态的RMQ就行。。
区间操作必须是连续区间
不然的话就不是一次操作能解决的事情了
拓展一个叫做二维线段树的东西
前面说的就是一维线段树,针对线段
二维就变成了矩形
比如这样
或者这样
第一种是将整棵树看成矩形的
第二种是树里套树
第一种更简单然而第二种复杂度更优
空间复杂度都是O(2*Long_x*Long_y)
时间复杂度:
第一种O(4*Long_x*Long_y)
第二种O(n*Long_x)
这是个四分思想
查询的相应变成矩形面积(矩形和
多维的可以仿照二维
2n分思想构造2n叉树
- 【清明】线段树
- 【清明】最小生成树
- 【清明】二叉树
- 清明
- 清明
- 清明
- 清明
- 清明
- 清明
- 清明
- 清明
- 清明
- 清明
- 清明
- 清明
- 清明。。。。
- 清明
- 清明
- ffmpeg时间戳设置以及含义
- 事务
- npm 运行基于 es6 的 node.js 工程
- 电脑开机滴滴5声故障
- ftp软件保存用户名、ip和密码然后上传
- 【清明】线段树
- 【软工视频】-面向对象技术
- 用 WEKA 进行数据挖掘,第 3 部分: 最近邻和程序库
- 欢迎使用CSDN-markdown编辑器
- 3种方法求解斐波那契数列
- Codeforces Round #392 (Div. 2) A+B
- 变长vector uva 101
- PAT(甲级)1035. Password (20)
- 涂磊的经典语录