- 1、本文档共51页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
国家集训队2007论文集4.余江伟《如何解决好
如何解决好动态统计问题 广东省中山市第一中学 余江伟 wintokk@ 【引言】 在信息学竞赛中,统计问题十分常见。请看一个例子: 在长度为N (2≤N≤106)的序列上进行M次以下操作: 【引言】 利用线段树,可以轻松设计出时间复杂度O(MlogN)、空间复杂度O(N) 的算法。 详见2004年薛矛前辈的论文 【引言】 线段树在本题取得成功的原因 高效的组织结构 很好地支持区间操作 前提条件——本题中,序列项与项之间隐含着严格不变的次序关系 当统计对象次序发生大规模变化,线段树就显得力不从心了,必须寻找更优秀的解法 【例一】维护序列 (NOI2005) 写一个程序维护一个序列,支持6种操作: INSERT a {cn} 在序列第 a 项后插入长度为 n 序列 DELETE a b 删除序列的第 a 项到第 b 项 MAKE-SAME a b c 把序列的第 a 项到第 b 项的值统一改为c REVERSE a b 把序列的第 a 项到第 b 项首尾翻转后放回原位 GET-SUM a b 输出序列的第 a 项到第 b 项的和 MAX-SUM 求序列中和最大的一段非空子列,并输出最大和 【例一】维护序列 (NOI2005) 写一个程序维护一个序列 INSERT a {ck} DELETE a b MAKE-SAME a b c REVERSE a b GET-SUM a b MAX-SUM 【例一】维护序列 (NOI2005) 初步分析 本题需要模拟一个序列的变化过程并随时统计相关求和信息 具有操作种类多、规模大的特点 朴素算法 数组/链表模拟,只能拿到部分分数 更优秀的算法 块状链表(参考解答),综合数组、链表的优势 树形结构 【例一】维护序列 (NOI2005) 关键问题——表示操作 【例一】维护序列 (NOI2005) 关键问题——表示操作 如何表示 二叉查找树(BST)表示序列 每个节点记录一个数 BST中序遍历结果为原序列 一棵表示(-5,-2,-1,1,6,-7,8,10,-5,19,0,21,22,3,-4)的BST 【例一】维护序列 (NOI2005) 关键问题——表示操作 如何操作 不难发现,大多数操作都是围绕某个“连续段”进行的 “连续段”在BST中可能比较分散,我们希望把这些节点聚集起来 伸展树 【例一】伸展树简介 伸展树是一种自适应(Self-Adjusting)的BST。具体地说,每次访问一个节点后,按照一定规则进行旋转,将其调整为树的根。 【例一】伸展树简介 伸展树是一种自适应(Self-Adjusting)的BST。具体地说,每次访问一个节点后,按照一定规则进行旋转,将其调整为树的根。 伸展树的旋转规则 Zig/Zag Zig-Zig/Zag-Zag Zig-Zag/Zag-Zig 【例一】伸展树简介 伸展树是一种自适应(Self-Adjusting)的BST。具体地说,每次访问一个节点后,按照一定规则进行旋转,将其调整为树的根。 伸展树的旋转规则 Zig/Zag Zig-Zig/Zag-Zag Zig-Zag/Zag-Zig 【例一】伸展树简介 伸展树是一种自适应(Self-Adjusting)的BST。具体地说,每次访问一个节点后,按照一定规则进行旋转,将其调整为树的根。 伸展树的旋转规则 Zig/Zag Zig-Zig/Zag-Zag Zig-Zag/Zag-Zig 【例一】伸展树简介 伸展树是一种自适应(Self-Adjusting)的BST。具体地说,每次访问一个节点后,按照一定规则进行旋转,将其调整为树的根。 伸展树的旋转规则 Zig/Zag Zig-Zig/Zag-Zag Zig-Zag/Zag-Zig 【例一】伸展树简介 按照以上规则将节点调整到根的过程称为伸展操作。可以证明,伸展操作的平摊复杂度为O(logN)。 利用伸展操作,可以完成所有BST的基本操作。 针对本题,在节点上记录子树的大小(Size),可以实现第K个节点的查找功能(SplayKth)。这也是解决本题的核心过程。 【例一】核心过程伪代码(1) SplayKth(p, kth) // 把以 p为根的子树下第kth个节点提到子树的根,并返回节点编号 if Size[Left[p]]+1 = kth then return p if Size[Left[p]] ≥ kth then x ← Left[p] if Size[Left[x]]+1 = kth then return Zig( x, p ) if Size[Left[x]] ≥ kth then
您可能关注的文档
- 华中农业大学关于批准⒛年研究生课程建设项目立项的通知.PDF
- 华为PON助力数字化铁路接入改造.PDF
- 华为波分传输设备调测-光纤通道调测.pdf
- 单相交流充电桩系列.PDF
- 单筒连续变倍显微镜.PDF
- 南京纺织品进出口股份有限公司2016年年度报告摘要.PDF
- 南华早讯2017年5月15日星期一金属动态.PDF
- 南台科技大学2012年幼儿保育国际学术研讨会.PDF
- 南台湾水仙宫探究.pdf
- 南方巫蛊习俗述略_容志毅.pdf
- 2025届安徽省舒城一中高三一诊考试英语试卷含解析.doc
- 广东省湛江市第二十一名校2023-2024学年高一下学期期中考试生物(选考)试卷.pdf
- 广东省湛江市第二十一名校2023-2024学年高一下学期期中考试生物(学考)试卷.docx
- 江苏省南通市合作盟校2025届高三压轴卷语文试卷含解析.doc
- 【权威】2025年高考第三次模拟考试 数学(新高考八省专用01 )(全解全析).docx
- 山东省菏泽市成武县全县联考2023-2024学年六年级下学期4月期中科学试题.docx
- 广东省湛江市第二十一名校2023-2024学年高一下学期期中考试生物(学考)试卷.pdf
- 2025届陕西省度西安中学高三下学期联考数学试题含解析.doc
- 河南省驻马店市2025届高考语文押题试卷含解析.doc
- 广东省湛江市雷州市第二名校2023-2024学年高一下学期生物期中试卷.docx
最近下载
- 初中历史跨学科教学模式探索与实践教学研究课题报告.docx
- 2025国家安全知识竞赛题库附答案(1-200题).docx
- 2023年保安员笔试考前题库500题(含答案).pdf VIP
- 西安市中招管理系统官网登陆入口http://222.91.162.190:81.doc
- 安全资料—13本台帐.doc VIP
- EHS管理-手册_原创精品文档.pdf VIP
- 尊重知识产权高中政治统编版选择性必修2法律与生活.pptx VIP
- QC∕T 29082-2019 汽车传动轴总成技术条件及台架试验方法.pdf
- 碳中和技术概论PPT完整全套教学课件.pptx
- 幼儿园玩教具装备采购 投标方案(技术标).doc VIP
文档评论(0)