POJ-2287-Tian Ji -- The Horse Racing
2014-07-04 16:17
330 查看
题意如下:
田忌和齐威王都有n匹马,然后他们要进行n场比赛,田忌赢一场会获得200金币,输一场会损失200金币,平局的话则不失不得!由于田忌和齐威王的马匹有不同的速度,现要求采用某种高能战术能让田忌获得最多money!
思路:
能赢就赢,实在不能赢,也要为其它马匹赢得一场比赛创造机会,或者跑出平局!
首先分别对田忌和齐威王的马匹根据速度进行排序!
设田忌当前最强马匹的下标为maxt,最弱马匹的下标为mint;
齐威王当前最强马匹的下标为maxq,最弱马匹的下标为minq;
不管哪只马,都只能比赛一场,所以比赛一场,肯定会有下标变化的!
请注意下面情况中的两个字“当前”,这个很重要!
极限情况:1.当前最强比当前最强,田忌若能赢,相应的下标会产生变化;
2.当前最弱比当前最弱,田忌若能赢,相应的下标会产生变化;
3.若田忌在前面的两种情况中都不能获胜(不一定就是输,平局也有可能!),那么就用田忌当前最弱的马匹去和齐威王当前最强的马匹单挑,让其光荣的输掉!
田忌:87 80 50 !
齐王:87 85 50 !
当然,此时可能有一种比较奇葩的情况出现,就是田忌当前最弱的马匹和齐威王当前最强的马匹打成平手啦!那么ans就不用减减了!就这种奇葩情况举个例子:
田忌:87 87 87 !
齐王:87 87 87 !
代码如下:(代码里有一些是测试用的!被我注释掉了的!)
田忌和齐威王都有n匹马,然后他们要进行n场比赛,田忌赢一场会获得200金币,输一场会损失200金币,平局的话则不失不得!由于田忌和齐威王的马匹有不同的速度,现要求采用某种高能战术能让田忌获得最多money!
思路:
能赢就赢,实在不能赢,也要为其它马匹赢得一场比赛创造机会,或者跑出平局!
首先分别对田忌和齐威王的马匹根据速度进行排序!
设田忌当前最强马匹的下标为maxt,最弱马匹的下标为mint;
齐威王当前最强马匹的下标为maxq,最弱马匹的下标为minq;
不管哪只马,都只能比赛一场,所以比赛一场,肯定会有下标变化的!
请注意下面情况中的两个字“当前”,这个很重要!
极限情况:1.当前最强比当前最强,田忌若能赢,相应的下标会产生变化;
2.当前最弱比当前最弱,田忌若能赢,相应的下标会产生变化;
3.若田忌在前面的两种情况中都不能获胜(不一定就是输,平局也有可能!),那么就用田忌当前最弱的马匹去和齐威王当前最强的马匹单挑,让其光荣的输掉!
田忌:87 80 50 !
齐王:87 85 50 !
当然,此时可能有一种比较奇葩的情况出现,就是田忌当前最弱的马匹和齐威王当前最强的马匹打成平手啦!那么ans就不用减减了!就这种奇葩情况举个例子:
田忌:87 87 87 !
齐王:87 87 87 !
代码如下:(代码里有一些是测试用的!被我注释掉了的!)
#include<algorithm> #include<stdio.h> #include<string.h> using namespace std; int main() { int n,tian[5203],king[5204]; while(scanf("%d",&n)!=EOF&&n) { for(int i=0;i<n;i++) scanf("%d",&tian[i]); for(int i=0;i<n;i++) scanf("%d",&king[i]); sort(tian,tian+n); sort(king,king+n); int maxt=n-1; int mint=0; int maxk=n-1; int mink=0; int ans=0; while(maxt>=mint) { //printf("ans=%d\n",ans); if(tian[maxt]>king[maxk]) {//田忌的最强马匹完全能赢过king的最强马匹! maxt--; maxk--; ans++; } else if(tian[mint]>king[mink]) {//田忌的最弱马匹完全能赢过king的最弱马匹! mint++; mink++; ans++; } else {//现在的情况是田忌最强和最弱马匹都不能赢.. //king的最强和最弱马匹!//所以需要以小换大的方法了! if(tian[mint]<king[maxk]) ans--;//这种情况是必然要输一场的了!不然就是平局,ans就不会加加了! mint++; maxk--; } //printf("田忌maxt=%d;mint=%d\n",maxt,mint); //printf("齐威maxk=%d;mink=%d\n",maxk,mink); } printf("%d\n",ans*200); } return 0; }
相关文章推荐
- POJ-2287 Tian Ji -- The Horse Racing 贪心规则在动态规划中的应用 Or 纯贪心
- POJ 2287 Tian Ji -- The Horse Racing(贪心)
- POJ 2287 && HDU 1052 Tian Ji -- The Horse Racing(贪心)
- poj 2287 Tian Ji -- The Horse Racing
- POJ 2287 Tian Ji -- The Horse Racing&&浙江科技学院第十三届程序设计竞赛1006 田忌赛马后传(贪心)
- poj 2287 Tian Ji -- The Horse Racing
- (贪心5.1.2)POJ 2287 Tian Ji -- The Horse Racing
- poj 2287 Tian Ji -- The Horse Racing
- poj-2287-Tian Ji -- The Horse Racing
- (贪心5.1.2)POJ 2287 Tian Ji -- The Horse Racing
- poj 2287 Tian Ji -- The Horse Racing
- POJ 2287:Tian Ji -- The Horse Racing
- poj 2287 Tian Ji -- The Horse Racing (贪心)
- POJ-2287 Tian Ji -- The Horse Racing 贪心 | DP
- poj 2287 Tian Ji -- The Horse Racing(贪心)
- poj 2287 Tian Ji -- The Horse Racing(贪心)
- POJ-2287-Tian Ji -- The Horse Racing
- POJ 2287 HDU 1052 Tian Ji -- The Horse Racing
- poj 2287 Tian Ji -- The Horse Racing 贪心思想在动态规划上的应用
- pku2287 Tian Ji -- The Horse Racing