http://acm.hdu.edu.cn/showproblem.php?pid=1052
题意:给一个n是双方的马匹数,第一行是田忌的马,第二行是齐王的马,
赢了赚200两银子,输了输两百两,平局则没有
题解:利用贪心策略,
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
int a[2005],b[2005];
int main()
{
int t,ans;
int l1,l2,r2,r1;
while(cin>>t&&t)
{
for(int i=0;i<t;i++)
scanf("%d",&a[i]);
for(int i=0;i<t;i++)
scanf("%d",&b[i]);
sort(a,a+t); sort(b,b+t);
l1=0,l2=0,r2=t-1,r1=t-1;
ans=0;
while(l1<=r1)
{
if(a[r1]>b[r2])//田忌最好的马比齐王好
{
ans+=200;
r1--,r2--;
}
else if(a[r1]<b[r2])//田忌最好的马没有齐王好,用他最差的马和齐王比
{ans-=200;
l1++; r2--;
}
else if(a[r1]==b[r2]&&a[l1]>b[l2])//田忌最好的马速度和齐王一样快,最差的马比齐王最差的马快
{
ans+=200;
l1++; l2++;
}else if((a[r1]==b[r2])&&(a[l1]<=b[l2]))//田忌最好的马速度和齐王一样快,最差的马比不上齐王最差的马
//用最差的去和齐王最好的马比较
{
if(a[l1]<b[r2])ans-=200;
l1++;
r2--;
}
}
printf("%d\n",ans);
}
return 0;
}