Treap跳表总结【信息技术】.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Treap 和 Skip List的总结 By LogicalMars QQ:420158002 目录: 1.。。。。。。。。。。。。。。。。。。。。简介 2.。。。。。。。。。。。。。。Section 1 : Treap 3.。。。。。。。。。。。。。。Section 2 : Skip List 4.。。。。。。。。。。。。。。。。。。。。应用 4.1.。。。。。。。。。应用1: 营业额统计 4.2.。。。。。。。。。应用2:宠物收养所 4.3.。。。。。。。。。应用3:郁闷的出纳员 PS: 测试数据可以找我要 Treap是一种高效的平衡树,用来维护一个动态的有序体系,因为是树形的,所以效率很高,基本是O(logn)的插入,删除,和查找,其他的一些基本操作和二叉查找树一样(BST)一样,但话说回来,还是很重要的,考试的题目不会那么简单^_^。此外,Skip List(跳跃表)是Treap的一个代替品,基本操作的复杂度也是O(logn),但是处理前k大数的问题就很麻烦,不如Treap,Treap可以完全代替它,但是由于其线性的结构,又使他的代码很简单,所以也有价值(他的速度没有Treap快) Section 1 Treap( Treap = Tree + Heap.) Data Structure(采用静态的结构) 每一个接点有两个基本的值,一个是p,一个是x。x是它的值,p表示他的优先级,随机产生。left指向他的左儿子,right指向他的右儿子,count表示他和他的子孙一共有多少,用于统计k_th number. Rotate: 平衡树之所以平衡,绝大多数用的是旋转的方法,如图: 旋转不改变平衡树的性质,但是可以调堆。具体的做法见程序。 Insert: 与BST几乎完全相同,就是在插入后要根据堆的优先值调整堆。我用的是小根堆,当然你可用大根。 Delete: 将要删除的节点,转到叶子,然后放掉 Find: 一般BST,不写了。 Find X_th Number: Check the nearest to a certain number: Section 2: Skip List 说来话长 见程序: Section 3 应用 营业额统计 (turnover.exe) Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。经济管理学上定义了一种最小波动值来衡量这种情况: 该天的最小波动值 当最小波动值越大时,就说明营业情况越不稳定。 而分析整个公司的从成立到现在营业情况是否稳定,只需要把每一天的最小波动值加起来就可以了。你的任务就是编写一个程序帮助Tiger来计算这一个值。 第一天的最小波动值为第一天的营业额。 输入输出要求 输入由文件’turnover.in’读入。 第一行为正整数,表示该公司从成立一直到现在的天数,接下来的n行每行有一个正整数,表示第i天公司的营业额。 输出到文件’turnover.out’。 输出文件仅有一个正整数,即。结果小于。 输入输出样例 Turnover.in Turnover.out 6 5 1 2 5 4 6 12 结果说明:5+|1-5|+|2-1|+|5-5|+|4-5|+|6-5|=5+4+1+0+1+1=12 解:直接套用数据结构。 程序: 宠物收养所 (pet) 【背景描述】 最近,阿Q开了一间宠物收养所。收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物。 每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领养的宠物的特点值a(a是一个正整数,a2^31),而他也给每个处在收养所的宠物一个特点值。这样他就能够很方便的处理整个领养宠物的过程了,宠物收养所总是会有两种情况发生:被遗弃的宠物过多或者是想要收养宠物的人太多,而宠物太少。 被遗弃的宠物过多时,假若到来一个领养者,这个领养者希望领养的宠物的特点值为a,那么它将会领养一只目前未被领养的宠物中特点值最接近a的一只宠物。(任何两只宠物的特点值都不可能是相同的,任何两个领养者的希望领养宠物的特点值也不可能是一样的)如果有两只满足要求的宠物,即存在两只宠物他们的特点值分别为a-b和a+b,那么领养者将会领养特点值为a-b的那只宠物。 收养宠物的人过多,假若到来一只被收养的宠物,那么哪个领养者能够领养它呢?能够领养它的领养者,是那个希望

文档评论(0)

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

1亿VIP精品文档

相关文档