NYOJ 364 田忌赛马 (贪心)
分类: 解题报告 2012-09-18 14:11 583人阅读 评论(2) 收藏 举报
ini
题目链接
好长一篇阅读理解,不过题意不难理解,第一行给出n表示有n场比赛,以下两行分别给出n个数,分别表示田忌和齐王n匹马的速度,
赢家从输者手中获得200钱,求田忌最多能赢多少钱。
#include<iostream>
#include<algorithm>
using namespace std;
int tian[1005],king[1005];
bool cmp(int a,int b)
{
return a>b;
}
int match(int n)
{
sort(tian,tian+n,cmp);
sort(king,king+n,cmp);
int tl=0,tr=n-1,kl=0,kr=n-1,win=0,lose=0;
while(tl<=tr)
{
if(tian[tl]>king[kl])
{
win++;
tl++;
kl++;
}
else if(tian[tr]>king[kr])
{
win++;
tr--;
kr--;
}
else
{
if(tian[tr]<king[kl])
lose++;
tr--;
kl++;
}
}
return (win-lose)*200;
}
int main()
{
int n,i;
while(cin>>n)
{
for(i=0;i<n;i++)
cin>>tian[i];
for(i=0;i<n;i++)
cin>>king[i];
cout<<match(n)<<endl;
}
return 0;
}
思路详解:<p>1、当田忌最快的马比齐王最快的马快时,用田忌最快的马对抗齐王最快的马,赢一场。</p><p>2、当田忌最慢的马比齐王最慢的马快时,用田忌最慢的马对抗齐王最慢的马,赢一场。</p><p>3、当1、2都不满足时,用田忌最慢的马对抗齐王最快的马,若田忌最慢的马比齐王最快的慢时,输一场,否则平局。</p><p>
</p>
NYOJ 364 田忌赛马(贪心)
最新推荐文章于 2023-11-08 16:31:36 发布