hdoj 1052 || poj 2287
来源:互联网 发布:卡密授权系统源码 编辑:程序博客网 时间:2024/06/15 10:43
从今天起要好好写解题报告
田忌赛马
很久前在PKU上做过 今天复习贪心时在HDOJ重新做了 耗了一个下午(很是沉不住气提交了相当多次)找个隐藏得很隐蔽的错误~竟是变量名写错~
一开始的想法错了 在网上搜了别人的解题报告 被这样一组搜到数据揪出来
2
4 2
4 1 ====》200
2
4 1
4 2 ====》0
写写自己的一点理解~
总体的思想就是 田忌以最小代价赢齐王 最小代价输齐王 齐王以最大代价赢田忌 最大代价输田忌
先从大到小排序
(1)当田忌当前最快的马快于齐王当前最快的马 则以最小代价去赢齐王
这时有两种选择 一是以当前最慢的马去输给齐王 二是以当前最快的马去赢齐王 因为田忌以当前最快的马可以赢齐王任何的马 很明显应
该去赢齐王当前最快的马(迟早都要比 当然跟最强的比) 所付出的代价是最小的 也就是两者的差是最小的
(2)当田忌当前最快的马与齐王当前最快的马速度相同时
这个时候如果直接用当前最慢的马去输给齐王是否是最小代价呢 从上面两组数据可以发现 如果当前最慢的马不是目前所有马中最慢的
即不是最小代价 因为当前最慢的马还可以以最小代价赢 以此往前推 直到用当前最慢的马去输给齐王。
(2)当田忌当前最快的马慢于齐王当前最快的马 则直接用当前最慢的马去输给齐王 或同第二种情况(刚发现)
因为在田忌当前的马中没有快于齐王当前最快的马的时候 以最慢的马与齐王最快的马比 能让田忌损失的代价最小 齐王需要的代价最大
也就是两者的差最大 。
刚在考虑这样一个问题 按网上大牛们的方法 为什么第三种情况就直接用田忌当前最慢的马去输掉 而不是同第二种情况?
于是试着把第三种情况归到第二种情况中 也神奇地通过了~
郁闷了~
- hdoj 1052 || poj 2287
- hdoj 1482 poj 1013
- POJ and HDOJ problem
- HDOJ 1063 && POJ 1001
- POJ 2054 && HDOJ 1055
- POJ 1521 && HDOJ 1053
- Evacuation HDOJ 3757 poj 3963
- HDOJ-1301-POJ-Jungle Roads
- HDOJ 1059 && POJ 1014 Dividing
- POJ 1458 || HDOJ 1159 Common Subsequence (DP)
- poj 1273 Drainage Ditches | hdoj 1532
- poj 1386 | hdoj 1116 play on words
- poj 2362 hdoj 1518 Square(搜索)
- poj 1458 hdoj 1159 Common Subsequence
- POJ 2362 HDOJ 1518 Square DFS剪枝
- hdoj 1101/poj 2423 解题思路
- 【置换群】 HDOJ 1439 && POJ 1026 Cipher
- HDoj-1079 || Poj-1082-Calendar Game
- 在linux上使用BIND建立DNS服务器(1)
- Android高手进阶教程(一)-------Android常用名令集锦(图文并茂)!
- InvalidateRect()与Invalidate()的用法
- ADS中堆地址的设置方法
- 字符串分割函数strtok的用法
- hdoj 1052 || poj 2287
- 在linux上使用BIND建立DNS服务器(2)
- 质量保证漫漫谈之SQA组织的建设
- 游戏服务器开发法则(二)
- 防163帐户填写自动下拉菜单
- 在linux上使用BIND建立DNS服务器(3)
- C++中的模板(template)
- 将图片保存到表中并用ajax技术获取图片
- JSP 防止重复提交 防止重复刷新 防止后退问题以及处理方式