- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * BYVoid魔兽世界模拟赛 Stage.3 2009年10月31日 题目一览 题目 算法 难易度 彩色穿孔卡片 区间扫描 合并 ★★★ 艾萨拉的激流 动态规划 ★★ 阿鲁高的阴谋 动态规划 背包问题 ★★★ 潜入辛迪加 搜索 ★★★★ 比赛情况 共60人参赛 400分有1人,Winmad。 300分以上有6人。 200分以上有23人。 比赛情况 100分 0分 彩色穿孔卡片 15人 15人 艾萨拉的激流 44人 3人 阿鲁高的阴谋 15人 33人 潜入辛迪加 2人 44人 首先,我们来理清一下题意。 题述大意是在一个数轴上,有N条线段被依次画上。后画上的线段会将原来的部分线段覆盖。最后问到能够在数轴上看到多少条线段,比如样例数据 4 0 5(红) 3 8(黄) 5 6(盖) 4 7(蓝) 彩色穿孔卡片 算法一 我们可以模仿NOIP2005普及组校门外的树的做法,用一个标志数组f(i)表示数轴上第i个单元格的最上层线段的标号。一次读入线段的始点与终点,更新之间单元格的最上层线段。最后扫描一遍即可。 显然,对于题目中给出的数据范围,这种方法只能拿到50%的分数。这个方法之所以慢的原因是什么呢?因为这个方法把数轴分成了一个一个的单元格,但是线段的数目又是相对较少的,也就是说会有大段大段的相同标号的格子,我们设法尽量将相同标号的格子合在一起。 下面将给出基于离散化思想的两种算法。 算法二 对于给定的两条线段a(A1,B1)和b(A2,B2)(假设b在a之后被放在数轴上),两者若满足 B1=A2或B2=A1 则两者不相交。否则,两者相交。现在分析一下两者相交的情况。 1、b将a完全覆盖(A2=A1且B1=B2) 2、b将a部分覆盖,此时,两条线段将被分为几部分,如下图 原本的两条线段a、b被分为三条线段(A1,A2),(A2,B2),(B2,B1)(此三条线段若终点大于起点,则线段不存在) 有了上述分析,我们可以构造出来这样一个算法。按照题给顺序依次读入线段b,建一队列来保存所有互不相交的线段。 若队为空,则将b入栈。 否则,用b更新队列,因为b的优先级大于队列中所有元素的优先级。所以,更新时,先取出队头元素a(并将队列中的队首删除),根据相交情况,将a与b分解为若干条不相交的线段,将a的部分加入队列,直到将队列中的元素更新完毕,再将b加入队列。最后扫描一遍即可。 时间复杂度:O(n^2) 算法三 首先,将所有的起点与终点放在一起排序*,对于样例,如下图 每个点都有两个属性,一个表明它是起点还是终点,一个表明它的优先级。如上图,我们从左向右扫描。 K的意义为当前点到下一个点的区间的最高优先级。 K=1 K=2 K=4 K=4 K=4 K=2 K=0 对于这个算法,我们需要维护位于某个点时,当前的优先级都有哪些,比如在区间(3,4),此时存在的优先级有(1,2),而在区间(5,6),优先级包含(2,3,1)(因为1号优先级在5点位置已经结束)。在从左向右的扫描过程中,K的意义为当前点到下一个点的区间的最高优先级。如果遇到起点,应当把这个起点的优先级加入优先级集合,并在优先级集合中取出最大的一个为K的当前值;如果遇到终点,应当把终点所对应的优先级从优先级集合中去除,并取一个最大的优先级作为K的值。若优先级集合为空,则K=0。 最后的答案即为K曾出现的优先级的种数。 因为K的特殊意义,我们需要在排序的时候注意以下细节 排序细节 安排a点与b点的前后顺序 如果a与b的坐标不相等,则将坐标小的放前面,坐标大的放后面。 否则,如果a与b同为起点,则将优先级大的放在前面,将优先级小的放在后面,如果a与b同为终点,则将优先级小的放在前面,优先级大的放在后面。 否则,如果a与b一个为起点一个为终点,应该把起点放在前面,终点放在后面。 这个算法的时间复杂度因维护优先级集合的方法而异。 若用线性表维护,总时间复杂度为O(n*n);若用堆或排序二叉树来维护,总的时间复杂度为O(n*log n) 当前扫描点: 优先级集合: K的当前值: K曾出现的值: (0,s,1) 1 1 1 (3,s,2) 2 2 2 (4,s,4) (5,t,1) (5,s,3) (6,t,3) (7,t,4) (8,t,2) 4 4 4 3 2 ANS=3 分析此题,我们可以知道,从上游到下游,每过单位时间,船舶将向下游移动一个单位,而在移动的这个单位时,船舶可以选择与河流流向垂直的方向移动一格或者不动。 目标为在整个过程中,使经过的格子的宝藏的数目之和尽量多。 艾萨拉的激流 很显然,这是一个多阶段决策的动态规划问题。 设状态为f(i,j)示离上游距离为i,距岸边(指面向下游的左岸)距
您可能关注的文档
最近下载
- 2024《学前教育法》解读PPT课件.pptx
- 康明发 K280水平关节机器人说明书3.pdf
- 过程控制系统(毕业论文)精馏塔控制系统设计.doc
- 2025年南京市河西新城区国有资产经营控股集团有限责任公司人员招聘笔试模拟试题及答案解析.docx VIP
- 金堂县自来水红旗水库取水工程——原水输水管道复线工程非重大变动环境影响分析.pdf
- 医疗器械的人类受试者临床研究-临床试验质量管理规范(ISO 14155 :2020)中文版.pdf VIP
- 2025年学校体育活动经费预算计划.docx VIP
- 打造企业文化之基助力企业和谐发展.pdf VIP
- 动火作业安全培训.ppt VIP
- BM11_05_BladeEditor.ppt VIP
文档评论(0)