收藏 分销(赏)

清北学堂2012国庆NOIP——模型构建与全面分析.pptx

上传人:w****g 文档编号:3202692 上传时间:2024-06-25 格式:PPTX 页数:24 大小:64.85KB
下载 相关 举报
清北学堂2012国庆NOIP——模型构建与全面分析.pptx_第1页
第1页 / 共24页
清北学堂2012国庆NOIP——模型构建与全面分析.pptx_第2页
第2页 / 共24页
清北学堂2012国庆NOIP——模型构建与全面分析.pptx_第3页
第3页 / 共24页
清北学堂2012国庆NOIP——模型构建与全面分析.pptx_第4页
第4页 / 共24页
清北学堂2012国庆NOIP——模型构建与全面分析.pptx_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、高级数据结构汪一宁 清华大学基本数据结构易于实现功能简单,效率一般优先考虑使用简单数据结构来完成一道试题。星际争霸(经典试题)给出一个无向图,有N个点M条边,N,M=100,000支持两种操作删除图中的一条边询问两个顶点是否可达操作总数=100,000知识准备:并查集维护分离集合的合并与查询时间复杂度合并和查询两个集合:O(alpha(n)注意事项按秩合并路径压缩解题思路并查集并不支持分离集合的操作解决方案:逆向思维!1009 of Tianjin Online Contest,2012一个序列有一个左指针和一个右指针,要求维护以下操作将某个指针向左或者向右移动在某个指针的左侧或者右侧插入一个

2、元素在某个指针的左侧或者右侧删除一个元素将两个指针之间的元素反转解题思路使用最简单的方法解决问题思考:所有的操作都和两个指针的位置相关。合理使用STL库STL库中的重要容器Vector,Queue,Deque,Stack,Priority QueueMap,Set,Multimap,Multiset线段树线段树结构为区间1,n中的每个元素分配一个叶节点针对相邻的两个节点,产生一个上层节点如此做直到某一层只有一个包含整个区间的节点为止。线段树:建树过程BuildTree(p,b,e):Create a new node NIf b e:N.left=BuildTree(p1);N.right=B

3、uildTree(p1)+1,e)线段树:节点数据记录某一个节点代表一个区间(b,e)上的数据记录。如果b=e,则这个点是叶子结点;否则,这个点有且仅有两个孩子。节点数据向上更新型,例如区间上所有元素的和,最小值,等等向下更新型,例如该区间是否被反转,线段树:访问机制Visit(p,b,e):Update DownwardIf b=p.b and e=p.e:do the visitElse:If b=p.left.e:Visit(p=p.right.b:Visit(p1)+1,MAX(b,p.left.b),e)Update Upward线段树:适用范围一个区间上的统计信息可以通过其两个子区

4、间上的信息合并得到。对一个区间上所有元素的操作可以分解成对其两个子区间上元素分别的操作。回顾前述试题修改不允许插入或者删除元素,但是可以修改任何一个位置的元素可以将任何一段区间中的元素反转要求查询任何一段区间中元素的和思考哪些数据需要“向上”维护?哪些数据需要“向下”维护?USACO hotel有N间房间空着,M头奶牛前来入住每一头奶牛希望订到连续d间房间如果没有这样的连续d间房间,这头奶牛放弃入住否则,分配编号最小的满足条件的连续d间房间给这头奶牛N,M=50,000解题思路哪些向上更新的数据需要被维护?区间中空闲房间总数?哪些向下更新的数据需要被维护?该区间是否全部被预订怎样才能够找出连续

5、的d间空闲房间?区间左端空闲房间数区间右端空闲房间数彩球统计(原创)有N个彩球排成一列,每个球的颜色是1M中的一种。有Q次询问,每次询问一个区间a,b中有多少种不同颜色的球N,M,Q=100,000解题思路线段树能够维护“区间中的颜色数目”这一数据么?解题思路(contd)离线询问试题将询问区间按照左端点排序只维护每种颜色的第一个球先用链表把每一种颜色的球串起来。随着询问区间向右移动,在链表上移动指针。使用线段树来回答询问区间中有多少个每种颜色的第一个球平衡树二叉搜索树一颗中序遍历是升序的二叉树平衡二叉树采用某种机制控制二叉树的高度严格平衡:AVL,红黑树,SBT均摊平衡:Splay期望平衡:Treap关键操作旋转Treap介绍每个节点存储一个随机的“优先值”结构:键值构成二叉搜索树,优先值构成堆优势:旋转方式只有两种,插入删除简单劣势:需要多维护一个数据常数较其他平衡树大Splay介绍核心思想:任何操作之后(或之前),将一个节点旋转至根节点。优势:思想简单,容易掌握可以实现一些特殊的统计功能劣势:4种旋转,略麻烦仅保证均摊时间复杂度,一次操作可能耗时很长,树结构也可能很不好。数列维护(NOI2005)维护一个数列,支持以下操作:插入,删除,翻转查询区间内的元素之和查询区间内的最大元素解题思路Splay怎样在旋转的过程中维护子树的信息?怎样取出一个区间?

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服