题意:田忌赛马,求出能赢的最大的钱数
思路:
1、每次失败的马匹,要体现其失败价值最大化,即必败无疑的马匹要跟其King最好的马匹比赛,才能实现其失败的价值!(即给后继马匹争取更大的赢取几率)
2、每次胜利的马匹,要体现其胜利价值最大化,即要赢了king里相对最好的马匹!(即也给后继马匹争取更大的赢取几率)3、拒绝平局
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1005;
int a[N], b[N];
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 i, j, k, s;
j = s = 0;
k = n - 1;
for (i = 0; i < n;) {
if (a[i] > b[j]) {
s++;
i++;
j++;
}
else if (a[n - 1] > b[k]){
s++;
n--;
k--;
}
else {
if (a[i] < b[k])
s--;
k--;
i++;
}
}
printf("%d\n", s * 200);
}
return 0;
}