- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构 湖南师范大学 罗迅 问题 RMQ:Range Minimum Maximum Query 在一个序列上,给定区间,求区间极值 LCA:Lowest Common Ancestor 最近公共祖先是一个节点,是指定两点的祖先,且深度尽量深 RMQ 给定一个序列A,问A[i,j]的极值,一般会问极值所在的下标,而不是问极值本身 如果只问一次,O(n) 现在的问题是,不停的查询同一个序列的不同区间内的极值 暴力法 矩阵M[n][n],令M[i][j]是A[i,j]的极值 做一个双重循环即可,O(n2) 以后每次查询,只需O(1) 空间也是O(n2) Sparse Table算法 矩阵M[n][logn+1] M[i][j]是区间A[i,i+2j)的极值 矩阵M的元素值的确定:类似于倍增算法 源代码 RMQ解法 已知M[n][logn],问A[i,j]的极值 令k=log(i-j+1) ST算法 预处理:O(n*logn) 查询:O(1) 空间复杂度: O(n*logn) /tc?module=Staticd1=tutorialsd2=lowestCommonAncestor 题目列表 POJ3264,标准RMQ POJ3368,RMQ的一个扩展应用 线段树算法 预处理:O(n) 查询:O(logn) 空间复杂度: O(n) 线段树这种数据结构可以解决多种区间问题,不局限于RMQ 线段树图例 线段树是二叉树 每一个节点表示一个区间的值 例,右图5个节点分别保存了区间极值 根节点保存了全区间极值 叶子节点保存了单格值本身 静态数组实现线段树 线段树本质上是二叉树,静态数组实现线段树,实际上就是数组实现二叉树 如果问题规模是n,用于保存二叉树的 静态数组不会超过4n 令数组为St[] 以1为根节点 lson(x) ( (x) 1 ) rson(x) ( (x) 1 | 1 ) 线段树操作 build(idx,left,right) if left == right 确定单元格数值St[idx] mid = (left+right)1 build(lson(idx),left,mid) build(rson(idx),mid+1,right) query(idx,left,right,a,b) if a=left right=b return St[idx] mid = (left+right)1 if a = mid ans1 = query(lson(idx),left,mid,a,b) if b mid ans2 = query(rson(idx),mid+1,right,a,b) return MAX(ans1,ans2) 线段树适用问题 线段树可以查询极值,也可以查询区间和 线段树可以用于动态更新、查询 典型问题: 一个序列的整数 有更新操作,更新分为单点更新和成段更新 有查询操作,要求回答区间值 线段树操作 update(idx,left,right,sn,num) if left == right St[idx] += num int mid = (left+right) 1 if sn = mid update(lson(idx),left,mid,sn,num) else update(rson(idx),mid+1,right,sn,num) calDad(idx) calDad(idx) St[idx] = MAX(St[lson(idx)],St[rson(idx)]) 线段树延迟操作 对于区间成段更新,延迟操作是必须的 对于每一个成段更新,只更新到完整的段就可以了,而不必更新更深层次的节点 只有查询或者再次更新更深节点的时候才更新 延迟操作示例 成段更新1:3 此时只要更新根节点即可 如果接下来需要查询1:3,那么直接得结果 如果查询1:2,那么需要先更新1:2,再查询 延迟操作实现 实现延迟操作需要增加一个域,用来保存更新信息,用于其子节点 还需要一个函数,利用父节点更新信息去计算子节点更新后的结果 更多内容 /index.php/segment-tree-complete/ 题目列表 hdu1166,区间和 hdu1754,区间极值 hdu1394 hdu2795 hdu1698,成段更新 hdu3468,成段更新 并查集 处理不相交集合的合并和查询 Union find set 一般采用树状的逻辑结构 物理结构使用数组即可 father[3] = 2 father[2] = 2 并查集的查询 查询:求指定节点的始祖 优化:顺便将所经过的节点都指向始祖 k = father[x]; return k == x
您可能关注的文档
- Internet技术与应用教程曲桂东毕燕丽主编第4章节有哪些信誉好的足球投注网站引擎的使用.ppt
- WindowsServer配置管理项目实训教程第二版习题答案-平寒项目12监测网络系统与优化性能.ppt
- WindowsSever2008网络管理与应用刘瑞胡国胜第1章节.ppt
- WindowsSever2008网络管理与应用刘瑞胡国胜第4章节.ppt
- Internet技术与应用教程曲桂东毕燕丽主编第8章节网上学习与生活.ppt
- Internet技术与应用教程曲桂东毕燕丽主编第9章节网上电子商务系统.ppt
- WindowsSever2008网络管理与应用刘瑞胡国胜第8章节.ppt
- Internet技术与应用教程曲桂东毕燕丽主编第11章节网络安全与病毒防范.ppt
- WindowsSever2008网络管理与应用刘瑞胡国胜第9章节.ppt
- Internet技术与应用尚晓航等Internet技术与应用目录.ppt
最近下载
- 一体机-柯尼卡美能达-bizhubC220说明书.pdf VIP
- BS EN 60079-32-2-2015 国外国际规范.pdf VIP
- 急诊科患者转运途中突然病情变化应急预案.pptx VIP
- G30连云港至霍尔果斯高速景家口至清水驿段扩容改造报告书.pdf VIP
- 股骨粗隆间骨折护理查房——护理问题及措施与健康指导.ppt VIP
- 零星工程 投标方案(技术方案).docx
- 一种比色法检测金黄色葡萄球菌活菌的Cu-MOF材料及其制备方法和应用.pdf VIP
- 中国农业银行超柜业务及账户管理相关知识考试试卷.docx VIP
- 第三章第一节SOLAS公约 - 青岛远洋船员职业学院-精品课程 ....ppt VIP
- 小学田径教学教案全集.docx VIP
文档评论(0)