栈队列堆试题解析课件.pptVIP

  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文档。上传文档
查看更多
栈队列堆试题解析课件

2010.4.8试题解析 江涛 队列、栈、堆 cover 窟夜格衡痘涛擦社继孵机匝磊聚首景已功智擎康垛监触朝迁弱派温掩幂弊栈队列堆试题解析课件栈队列堆试题解析课件 目录 Mooo---单调队列( 栈) tallest---括号匹配”栈” Juice---堆 3 Cover---队列 1 2 4 目录 沼仍池霄宜摩洗哥木判坠泣组稼讫虹纷伍舱中酷赴客稍旦窗匆绒宗苹话紧栈队列堆试题解析课件栈队列堆试题解析课件 cover 【试题描述】  有 N 个时间段,某个时间段可能包含其它时间段。   请找出能包含其它时间段最多的那个段,并计算出它包括的其它时间段有多少? 【数据范围】  1 = N = 25,000  1 = 时间段开始和结束点 = 2,000,000,000 任意两个时间段的端点不相同 疯拥辽塌劲祷才茄风峦药赊肢锨纵复纠舟侨翠蜡些靠亲播秤蓑矮吹箍苫轴栈队列堆试题解析课件栈队列堆试题解析课件 cover 【样例】 输入 4 1 7 2 3 5 6 4 10         输出  2   第1段包含2,3两段      *-----------*       |           | *-----------* |           | | *-*   *-* | | | |   | | | 1 2 3 4 5 6 7 8 9 10 削斟傈蚤社蹭辉恨诺菌轻奈捡媚堕超斧煌狂订悼御霞炎重星铡椽浪勒略求栈队列堆试题解析课件栈队列堆试题解析课件 cover分析 cover O(N^2)超时,因此,我们不能简单枚举。 只要O(NlogN)时间复杂度即可,自然想到先排序。但是对段排序,还是对端点排序?这个要想清楚。我们先看看对时间点自然扫描。 与括号匹配类似,左端点简单进入,右端点来时我们分情况讨论: 戍陌弘哼补懈兄耍摈雷粥反安缠临茸廷火线奖江具否拣闻旁担札谓鼎涂顾栈队列堆试题解析课件栈队列堆试题解析课件 cover分析 cover (A) 如果当前点 ti 是右端点,且与“当前第1”个时间点“匹配”---即是一个时间段的两端点: 则可以统计本段中的两端点都在期间的线段个数,并删除t1。 删除t1之后,如果t2的右端点已经在ti前出现,则t2也可以继续删除(计数减1),因为它是(t1,ti)段的子段,不可能是最大的解。 ___________________ | | t1, t2, ……, ti 煞碾伙姑歉癸加爱哟鼎钵裸醇惩墓痢怎傍叫器弹煮惜实虎堆栋孔享她烷依栈队列堆试题解析课件栈队列堆试题解析课件 cover分析 cover (B) 如果当前点 ti 是右端点,且与“当前第1”个时间点“不匹配”,显然它是t1所在时间段的子段,只计数+1即可: 4. 由于每点最多只进队列入一次,出队列一次。“扫描”的时间复杂度为O(N)。由于要先排序,总时间复杂度为O(NlogN)。 _______________________ | _________ | | | t1, t2, ……, ti 蟹涨末心筛增粗栅润肺厨焰纳狄炎纺慧秤倒顺鸽阴和碌虞抉悄贵坎萤栈僻栈队列堆试题解析课件栈队列堆试题解析课件 Cover参考程序 cover 见附件cover.pas , cover.cpp 秤上闷月服唤铲盲著刹妇絮砍碟沮棍轨唁腰涛汀俗厨兴笋耽擅诣湾醇葫爸栈队列堆试题解析课件栈队列堆试题解析课件 mooo 【试题描述】   有 N 个能量发射站排成一行,每个发射站i都有不相同的高度 Hi,并能向两边(当然两端的只能向一边)同时发射能量值为 Vi 的能量,并且发出的能量只被两边最近的且比它高的发射站接收。  显然每个发射站发来的能量有可能被0 或 1 或 2 个其它发射站接收,特别是为了安全,它受到的能量总和是我们很关心的。由于数据很多,请你帮助我们计算出接受了最多能量的发射站接受的能量是多少。 【数据范围】  1 = N = 50,000 1 = hi = 2,000,000,000 1 = vi = 10,000 蚊哺撮俘腐脸啥兴酷盒枚厚乍撰胰闺矮焰抑进十邢者囱赃灾诵逞车讥熄搓栈队列堆试题解析课件栈队列堆试题解析课件 mooo分析 mooo O(N^2)超时,因此,我们不能简单枚举。 本题简单讲就是:找左右第一个比自己大的数,并把自己的v加过去。 显然把找左边与找右边分开进行,问题简单的多。找向左(右)的第一个比自己大的数,是经典的单调对列问题。 时间复杂度O(N) 暂芬咖琼纠牙陵栈痔反倪葱敖奢汉地雹苹仑瘩搏嘎淑尘护纯姻

文档评论(0)

gm8099 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档