《ACM入门教程()-贪心算法》课件.pptVIP

  • 11
  • 0
  • 约9.59千字
  • 约 72页
  • 2018-11-12 发布于广西
  • 举报
* * a b c d e g f 例如: 19 5 14 18 27 16 8 21 3 a e 12 d c b g f 7 14 8 5 3 16 21 所得生成树权值和 = 14+8+3+5+16+21 = 67 * * 在生成树的构造过程中,图中 n 个顶点分属两个集合:已落在生成树上的顶点集 U 和尚未落在生成树上的顶点集V-U ,则应在所有连通U中顶点和V-U中顶点的边中选取权值最小的边。 一般情况下所添加的顶点应满足下列条件: * * a b c d e g f 19 5 14 18 27 16 8 21 3 a e 12 d c b 7 a a a 19 14 18 14 e 12 e e 8 16 8 d 3 d d 7 21 3 c 5 5 例如: * * 具体做法: 先构造一个只含 n 个顶点的子图 SG,然后从权值最小的边开始,若它的添加不使SG 中产生回路,则在 SG 上加上这条边,如此重复,直至加上 n-1 条边为止。 考虑问题的出发点: 为使生成树上边的权值之和达到最小,则应使生成树中每一条边的权值尽可能地小。 克鲁斯卡尔算法的基本思想: * * a b c d e g f 19 5 14 18 27 16 8 21 3 a e 12 d c b g f 7 14 8 5 3 16 21 例如: 7 12 18 19 * * 普里姆算法 克鲁斯卡尔算法 时间复杂度 O(n2) O(eloge) 稠密图 稀疏图 算法名 适应范围 比较两种算法 * * 请务必写出自己的模版! * * 所以…… 我们需要更多的策略,比如分治,比如动态规划 * * 贪心算法练习题: 1099 最少拦截系统 1340 矩形移动 hdoj 1009 FatMouse Trade 2037今年暑假不AC 1050?Moving Tables 1051?Wooden Sticks? 1052?Tian Ji -- The Horse Racing 1054?Strategic Game 1203、 1239 * * See you next week. Thank you! * * (3)HDOJ1052:田忌赛马 * * Case 1: King: 200 180 160 Tianji: 190 170 150 * * Case 2: King: 200 180 160 Tianji: 210 170 150 * * Case 3: King: 200 180 160 Tianji: 180 155 150 * * Case 4: King: 200 180 160 Tianji: 180 175 170 * * Case 5: King: 200 180 160 Tianji: 200 170 160 * * 如何归纳出贪心策略? 思考2分钟…… * * 贪心策略: 首先考虑让最弱的马,发挥最大的作用 如果 田忌最弱大王最弱 田忌最弱PK大王最弱 如果 田忌最弱大王最弱 田忌最弱PK大王最强 如果 田忌最弱=大王最弱(不好直接决策) 如果田忌最强大王最强 田忌最强PK大王最强 (先考虑最强的马发挥最大的作用) 如果田忌最强大王最强 田忌最弱PK大王最强 (反正一样是输,避免牺牲最强的马) 如果田忌最强=大王最强 田忌最弱PK大王最强 (在保证同等输赢的情况下,留住强的马) 这样的贪心策略能否保证最优解? * * 注意到没有…… 贪心往往要结合一定的排序策略 老鼠交易 —— 换算的比率大小 事件序列 —— 事件结束的时间 木板 —— 木板的长宽 赛马 —— 马的速度 * * (4)1340:矩形移动 /ShowProblem.aspx?ShowID=1340 平面上有很多个宽度为1长度不等的水平放置的长方形,这些长方形只可在纵坐标方向上自由移动,我们可以将这些长方形经过适当的平移,使得可以用一个最小的矩形区域来覆盖所有这些长方形,同时这些长方形必须满足两两之间都不重叠(若只是边界接触不算重叠)。 * * 输入:第一行为一个整数n(n=10000),表示长方形的个数;接下来有n行,每行有三个整数x1,y1,x2(0=x1x2200000,0=y12^31),分别表示一个长方形左下端点的横坐标和纵坐标,以及右下端点的横坐标。 输出:输出最小矩形的面积。 样本输入 3 1 23 3 3 40

文档评论(0)

1亿VIP精品文档

相关文档