《线段树应用》PPT课件.ppt
《《线段树应用》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《线段树应用》PPT课件.ppt(32页珍藏版)》请在三一办公上搜索。
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的线段树样例:,线段树的特征,定理二:线段树把区间上的任意一条线段都分成不超过2logL条线段。,这些结论为线段树能在O(logL)的时间内完成一条线段的插入、删除、查找等工作,提供了理论依据,定理一:线段树的深度不超过logL。,线段树的基本操作,插入一条线段:每个节点增加一个变量记录该节点被插入所有线段覆
2、盖的次数,自根节点往下,直到一个被线段完全覆盖的节点。,删除一条插入过的线段,与插入操作是一致的。,查找一个区间内线段的总长度。每个节点增加一个变量记录该区间内线段的总长度,并在插入和删除后维护相关节点的这个变量:儿子区间内的线段长度+覆盖本区间的线段长度,例1:蛇(SGU 128),在平面上有N个点,现在要用一些线段将它们连起来,使其满足以下要求:1 这些线段必须闭合2 线段的端点只能是这N个点。3 交于一点的两条线段成90度角4 线段都必须平行于X轴或Y轴5 所有线段除了在这N个点外不相交6 所有线段的长度之和必须最短如果存在这样的线段,则输出最小长度,否则输出0。,【问题分析】,所求的图
3、形是以题目所给的N个点为顶点的多边形。每条边要和X轴或Y轴平行。每个顶点与一条平行于X轴和一条平行于Y轴的线段相连。,P1 P2 P3 P4 P5 P6,将所有点排序后发现,在同一水平线的点中,设为P1,P2,P3,P4Pn,P1必须连它右边的点P2,P3只能连P4,P5连P6,同垂直线上的点也是如此。如果有解,解是唯一的,那么最小长度的问题就解决了。,由于解是唯一,所以关键在于判断由上述方法构出的图形是否合法满足线段不自交:,【问题分析】,如图,两条线段在内部相交,则必须满足x1xx2 和 y1yy2。,【问题解法】,将所有线段按X轴坐标排序,每条平行于Y轴的线段和每个平行于X轴线段的端点称
4、为一个事件,由于这题的区间性很明显,可以用线段树来解决。,本题要注意的是,线段在端点重合不算自交,所以X轴坐标相同时,事件的顺序要恰当处理。,将Y轴代表的区间建成线段树,并且每个节点记录它的区间内插入的点数。按顺序,扫描所有事件:如果遇到平行于X轴线段的左端点,则插入到线段树中,遇到右端点,则从线段树中删除。如果遇到平行于Y轴的线段,则在线段树中查找。,将轴坐标离散后,每次插入、删除、查找的复杂度是(logn)级别的,由于所有线段数量是(n)级别的,所以整题的复杂度是(nlogn)级别。,思考:本题删除的点与插入的点一一对应,所以删除实现很方便。如果删除的线段不一定插入过该怎么办?,例2:空心
5、长方体(POI99 Cuboid),在一个三维正坐标系中,存在N(N=5000)个点,现在要求一点P(x,y,z),使得O(0,0,0)与P(x,y,z)两个顶点构成的长方体内不包括N个点中的任何一个点(在长方体边缘不算包括),并使这个长方体的体积最大。x,y,z均不得超过1000000。,【问题分析】,P(x,y,z)代表的长方体包含一点Q,那么P的所有坐标值,都大于Q点的坐标值。PxQx PyQy PzQz,体积最大的长方体,其P点任意轴的坐标,都与N个点中的一个相同或者和边界相同。,【问题分析】,在已经确定P的X坐标情况下,将所有点的y坐标排序,得到序列y1,y2,y3。maxi记录P的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 线段树应用 线段 应用 PPT 课件
链接地址:https://www.31ppt.com/p-5641318.html