- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
IOI2004 国家集训队论文 林涛
线段树的应用
广西柳铁一中 林涛
摘要】
在竞赛解题中,常遇到与区间有关的操作,比如统计若干矩形并的面积,记
录一个区间的最值、总量,并在区间的插入、删除和修改中维护这些最值、总量。
线段树拥有良好的树形二分结构,能够高效的完成这些操作,本文将介绍
线段树的各种操作以及一些推广。
本文通过3 个例子:《蛇》、《空心长方体》、 《战场统计系统》,讲述线
段树中基本的插入、删除、查找操作,和不规则的修改和删除操作,以及到二维
的推广。
关键字:线段树 二分 子树收缩 叶子释放 面积树
正文】
1. 线段树的定义及特征
定义1:线段树
一棵二叉树,记为T (a,b) ,参数a,b 表示该节点表示区间[a,b] 。区间的长度
b-a 记为L 。递归定义T[a,b] :
若L1 :[a, (a+b) div 2]为 T 的左儿子
[(a+b) div 2,b]为T 的右儿子。
若L=1 :T 为一个叶子节点。
表示区间[1, 10] 的线段树表示如下:
[1,10]
[1,5] [5,10]
[1,3] [3,5] [5,7] [7,10]
[1,2] [2,3] [3,4] [4,5] [5,6] [6,7] [7,8] [8,10]
[8,9] [9,10]
( 以下取对数后均向上取整)
定理1:线段树把区间上的任意一条线段都分成不超过2logL 条线段
证明:(1)在区间(a ,b) 中,对于线段(c,d) ,如果(c=a) 或 (d=b) ,那么线段在
(a ,b) 中被分为不超过log(b-a) 。
用归纳法证明,如果是单位区间,最多被分为一段,成立。
如果区间(a ,b) 的左儿子与右儿子成立,那么如果当c=a 时,
1.若d=(a+b)div2 那么相当与其左儿子分该线段,所分该线段数树不
超过log((a+b)div 2-a) ,即不超过log(b-a),成立。
第 1 页 共 9 页
IOI2004 国家集训队论文 林涛
2 .若d(a+b) div 2 那么相当于该线段被分为它左儿子表示的线段,加
上右儿子分该线段,线段数不超过 1+log(b-(a+b) div 2),也不超过
log(b-a) ,成立。
对于d=b 的情况证明类似,不再赘述。
(2)在区间(a,b) 中,对于任意线段也用归纳法证明。
对于单位区间,最多分为一段,成立。
若(a ,b) 的左儿子与右儿子均成立,则对于线段(c,d)
1.若 d=(a+b)div 2 则该区间所分该线段等于其左儿子区间所分该
线段,线段数小于log((a+b) div 2-a)2log(b-a),成立。
2 .若c(a+b) div 2 则该区间所分该线段等于其右儿子区间所分该线
段,线段数小于log(b-(a+b) div 2)2log(b-a) ,成立。
3 .若1、2 均不成立,则此线段在左儿子区间分该线段满足dV.Lson.b,
分该线段数不超过log(b-(a+b) div 2) ,而在
文档评论(0)