题意:
田忌和国王赛马,赢一场得200,输一场失200,平不失不得.
思路:
wa了一发,因为平局的时候直接让两个互抵,为了让结果最优,应该在平局的时候找到最后一个田忌劣于国王的马与平局的对消,使赢得概率尽量大.
代码:
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 1000+5;
int a[maxn], b[maxn];
int cmp(int a, int b) {
return a>b;
}
int main() {
int n;
while(scanf("%d", &n)!=EOF && n!=0) {
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 al, ar, bl, br;
ar = br = n-1;
al = bl = 0;
int k=0, sum=0;
while(al<=ar && bl<=br) {
if(a[al]<b[bl]) {
sum -= 200;
br--;
al++;
}
else if(a[al]>b[bl]) {
al++, bl++;
sum += 200;
}
else {
while(a[ar]>b[br]) {
sum+=200;
ar--, br--;
}
if(a[ar]<b[br]) {
sum-=200;
al++, br--;
}
else {
if(a[al]<b[br]) {
sum -= 200;
al++, br--;
}
else if(a[al]==b[br]) break;
}
}
}
printf("%d\n", sum);
}
return 0;
}