您的位置:首页 > 其它

hdu 1052 贪心

2014-08-23 13:27 190 查看
题意:田忌和齐王各有n匹马,进行比赛,赢一场的200分,求田忌最大得分。

/*

每次取田忌的最快的马与齐王最快的马比较,有三种情况。

一、田忌最快的马比齐王最快的快,那么直接用田忌最快的马去赢齐王最快的马。

二、田忌最快的马比齐王最快的慢,那么用田忌最慢的马去输齐王最快的马。

三、田忌最快的马与齐王最快的马速度一样。

先用田忌最慢的马与齐王最慢的马比较。

若田忌比齐王快,直接赢掉齐王最慢的马。

否则田忌最慢的马再去与齐王最快的马比。

     如果最快最慢的马都一样,用田忌最慢的马和齐王最快的马比。

*/


代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int a[1111],b[1111];
int main()
{
int i,j,k,l,m,n;
while(cin>>n,n)
{
for(i=0;i<n;i++)
{
cin>>a[i];
}
for(j=0;j<n;j++)
{
cin>>b[j];
}
sort(a,a+n);
sort(b,b+n);
int l1=0,l2=0;
int q1=n-1,q2=n-1;
int sum=0;
for(i=0;i<n;i++)
{
if(a[q1]>b[q2])
{
sum+=200;
q1--;q2--;
}
else if(a[q1]<b[q2])
{
sum-=200;
l1++;
q2--;
}
else if(a[q1]==b[q2])
{
if(a[l1]>b[l2])
{
sum+=200;
l1++;
l2++;
}
else if(a[l1]<=b[l2])
{
if(a[l1]<b[q2])
{
sum-=200;
l1++;
q2--;
}
else if(a[l1]==b[q2])
{
l1++;
q2--;
}
}
}
}
cout<<sum<<endl;
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: