- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第13章 初涉ACM/ICPC 13.1 ACM/ICPC概述 定义:ACM/ICPC(ACM International Collegiate Programming Contest)是由 ACM(Association for Computing Machinery,美国计算机协会)组织的国际大学生程序设计竞赛的简称 ACM程序设计竞赛规定 程序设计竞赛中常见的算法: 13.2小数近似值问题与枚举算法 问题描述 在FORTRAN程序设计语言中,不支持浮点数运算。该语言的设计作者认为浮点数运算非常耗时,通常使用整数运算来代替浮点数 问题分析与求解 问题小结: 13.3迷宫问题与深度优先搜索 问题描述: 假设迷宫如下图13.1所示,图中的每个方块或为通道(以空白方块表示),或为墙(以带阴影的方块表示)。请编程求得一条从“入口”到“出口”的路径,每个通道只能经过一次! 问题分析与求解: 问题小结: 13.4经典01背包问题与动态规划算法 问题描述: 窃贼在偷窃时候,发现了n件物品,每件物品都具有一定的价值和重量,因为背包的容量有限,并且物品不能被分割成小的部分,因此希望得出他能带走哪几样物品才会使得带走的物品总价值最高。假设第i件物品价值为vi,重量为wi(1≤i≤n)。 而窃贼的背包限重已知为W总,且它们都为正整数。请你求出最后所能带走的最大价值。 问题分析与求解: 问题小结: 13.5经典部分背包问题与贪心算法 问题描述: 窃贼在偷窃时候,发现了n件物品,每件物品都具有一定的价值和重量,因为背包的容量有限,假设物品能被分割成小的部分,希望得出他能带走哪几样物品或物品的一部分才会使得带走的物品总价值最高。假设第i件物品价值为vi,重量为wi(1≤i≤n)。 而窃贼的背包限重已知为W总,且它们都为正整数。请你求出最后所能带走的最大价值。 分析解决问题: 设: x[i]表示取走第i件物品多少(值为0~1之间), v[i]表示第i件物品价值,w[i]表示第i件物品的 重量 只要: x[1]×w[1]+x[2]×w[2]…x[n]×w[n] = W总, 使得x[1]×v[1]+x[2]×v[2]……x[n]×v[n] 最大。 其中,0=x[i]=1,n为物品个数。 注:由于x[i]的不确定性(0~1之间的数值很多),该问题若用搜索算法很难确定范围。 C语言描述: 应用贪心选择策略的代码如下 : 问题小结: 13.6Sorting it All out 与图的拓扑排序 问题描述: 一个具有独特值的上升的有序系列是采用一组不小于的符号通过排序得来的,例如,上升有序序列A,B,C,D 是通过AB,BC,CD求得的。现在的问题是,给定一组类似于AB的关系的集合,问能否从这些关系中获得一个有序的上升序列,问题的输入包含一个整数N和整数M,N表示这个序列有N个大写字母,字母范围为第1~N个大写字母,因此2=N=26,M为关系的个数。每个关系被描述成如下:字母1字母2。求解是否能得出这些字母的有序上升序列,若能得出,请输出这个上升序列,若不能,请判断是关系冲突,还是关系条件不够。(如果AB,BA就是关系冲突;如果有三个字母,A,B,C, 而只有一个关系 CA 则关系不足很难确定顺序)。 分析问题: 问题解决步骤可以被描述如下: (1)从关系中找出入度为0的顶点,将该顶点加入序列,并去掉以Ci为起点的有向边。 (2)重复步骤1。 在重复这个步骤的过程中即可能遇到三种情况: (1)每次都能取出唯一一个入度为0的顶点,表明序列唯一,因为每次最小的顶点有且仅有一个。 (2)每次取出入度为0顶点个数超过一个,表明条件不足以确定序列,因为该次中最小的顶点超过一个,显然不可能。 (3)每次判断时不存在入度为0的顶点,表明产生冲突,即出现了形如ABCA,用有向边连接一起则会形成有向环。 应用前面分析步骤的关键代码如下 : 问题小结: 13.7 公路建设之图与最小生成树 问题描述: 岛国 Flatopia地面极其平坦,不幸的是该国却没有一条公路,Flatopia的交通非常的不方便。Flatopia政府也意识到这点,并计划建设一些公路,使得可以驱车到达任意一个城镇 Flatopia的城镇被编号为1~N,每条公路直接连通两个城镇,所有公路都是直线,且都是双向的。公路可以直接交叉,但是驾驶员只能在公路的两端变换行车路线,也就是说不能在公路的交叉点变换路线 Flatopia政府从实际调研中获得了每个城镇之间的直线距离,即在某两个城镇建一条公路实际长度,它们想要使得
文档评论(0)