- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
线段树的应用
广西柳铁一中 林涛
【摘要】
在竞赛解题中,常遇到与区间有关的操作,比如统计若干矩形并的面积,记录一个区间的最值、总量,并在区间的插入、删除和修改中维护这些最值、总量。
线段树拥有良好的树形二分结构,能够高效的完成这些操作,本文将介绍线段树的各种操作以及一些推广。
本文通过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:线段树把区间上的任意一条线段都分成不超过2logL条线段
证明:(1)在区间(a,b)中,对于线段(c,d),如果(c=a) 或 (d=b),那么线段在
(a,b)中被分为不超过log(b-a)。
用归纳法证明,如果是单位区间,最多被分为一段,成立。
如果区间(a,b)的左儿子与右儿子成立,那么如果当c=a时,
若d=(a+b)div2那么相当与其左儿子分该线段,所分该线段数树不超过log((a+b)div 2-a),即不超过log(b-a),成立。
若d(a+b) div 2那么相当于该线段被分为它左儿子表示的线段,加上右儿子分该线段,线段数不超过1+log(b-(a+b) div 2),也不超过log(b-a),成立。
对于d=b的情况证明类似,不再赘述。
(2)在区间(a,b)中,对于任意线段也用归纳法证明。
对于单位区间,最多分为一段,成立。
若(a,b)的左儿子与右儿子均成立,则对于线段(c,d)
若d=(a+b)div 2 则该区间所分该线段等于其左儿子区间所分线段,线段数小于log((a+b) div 2-a)2log(b-a)成立。
若c(a+b) div 2 则该区间所分线段等于其右儿子区间所分线段,线段数小于log(b-(a+b) div 2)2log(b-a)成立。
若12均不成立,则此线段在左儿子区间分该线段满足dV.Lson.b,分该线段数不超过log(b-(a+b) div 2),而在右儿子区间分该线段满足 c=V.Rson.a,分该线段不超过log((a+b) div 2-1),所以在该区间分该线段不超过2log(b-a),成立。
这个结论为线段树能在O(logL)的时间内完成一条线段的插入、删除、查找等工作,提供了理论依据。
【例题一】蛇
在平面上N个点,现在要求一些线段,使其满足以下要求:这些线段必须闭合
线段的端点只能是这N个点
交于一点的两条线段成90度角
线段都必须平行于坐标轴
所有线段除在这N个点外不自交
线段的长度和必须最短
如果存在这样的线段,则输出最小长度,否则输出0。
题目显然要求一个以给定的N个点为顶点的N多边形。所有线段都要和坐标轴平行,所以每个点只能与上下左右四个点相连。由于与一个点相连的两条线段成90度,必须一条平行于X轴一条平行于Y轴。
将所有点排序后发现,在同的点中,设这为P1,P2,P3,P4……Pn,P1要有一条平行X轴的与其相连,就必须连它右边的点——P2,而P3如果再连P2,P2就有两条平行于X轴的线段和它相连,所以P3只能连P4,P5连P6……,同的点也是如此,所以,那么最小长度的问题就解决了。
由于解是唯一,所以关键在于判断由所构出合法——满足线段不自交:
图1. 合法性判断
由于所有线段与坐标轴之一平行,有明显的区间性,可以想到用线段树判断是否自交:
由于只可能是与X轴平行的线段和与Y轴的线段相交,所以可以只考虑与Y轴平行的线段是否有线段与之相交。如果线段(x,y1)-(x,y2)与线段(x1,y)-(x2,y)相交,那么应该符合(x1xx2)(y1yy2),由条件(x1xx2),可以想到先把所有的线段按X坐标排序X轴坐标相同时,事件的顺序要恰当处理。如左图,右端点优先,与Y轴平行的线段其次,然后到左端点。
将Y轴表示的区间建立线段树。排序后,每个线段或线段的端点称为一个事件。按X坐标由小到大,扫描所有事件,如果遇到平行于X轴线段的左端点,则按它的Y坐标当成一个点,插入到表示Y轴区间的线段树中,如果遇到平行于X轴线段的右端点,则把它代表的点从线段树中删除。如果遇到与Y轴平行的线段L1(x,y1)-(x,y2),假设有线段L2(x1,y)
您可能关注的文档
最近下载
- 地理实验与实地考察试题及答案.docx
- 染料化学课件.pptx VIP
- 汽车销售大客户合同协议.docx VIP
- 毛新述《财务会计理论与实务》第14章 股份支付.pptx VIP
- 毛新述《财务会计理论与实务》第13章 金融资产转移.pptx VIP
- 花城版一年级音乐上册全册教学课件.pptx
- 毛新述《财务会计理论与实务》第12章 套期会计.pptx VIP
- 统编版道德与法治五年级上册2 学会沟通交流 课件.pptx VIP
- 广东省深圳市福田区职业能力测试真题汇总【二零一二年至二零二二年网友回忆版】.pdf VIP
- 毛新述人大版《财务会计理论与实务》PPT第11章 衍生工具与权益工具.pptx VIP
文档评论(0)