很经典的一个题,贪心吧。
有3个策略(所有的策略需要保证我能赢的最多)
1、如果我当前最快的马能够赢他最快的马,直接干掉,则赢一次。
2、如果我当前最慢的马能够赢他最慢的马,直接干掉,则赢一次。
3、上述都不满足,则用我最慢的马去跟他最快的马比,判断看是否输一次。
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=1001;
int a[maxn],b[maxn];
int main()
{
int n;
while(scanf("%d",&n)&&n)
{
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++)
scanf("%d",&b[i]);
sort(a,a+n);
sort(b,b+n);
int topa=0,topb=0,bota=n-1,botb=n-1,ans=0;
for(int i=0;i<n;i++)
{
if(a[bota]>b[botb])
{
ans++;
bota--;
botb--;
}
else if(a[topa]>b[topb])
{
ans++;
topa++;
topb++;
}
else
{
if(a[topa]<b[botb])
ans--;
topa++;
botb--;
}
}
printf("%d\n",ans*200);
}
return 0;
}