网站大量收购独家精品文档,联系QQ:2885784924

国家集训队2004论文集_林涛.pdf

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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)

rovend + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档