您的位置:首页 > 其它

UVALive - 3266 Tian Ji -- The Horse Racing

2016-07-23 18:48 417 查看
题目大意:田忌赛马,牺牲慢马以获得最大利益,输入田忌的马速和秦王的马速,每一轮输的人要给赢的人 200,输出可以获得的奖金。

解题思路:排序,从最大的开始比较,若比不过则比较最小的,最小若还是比不过就把田忌最小的马和秦王最大的马比,输一轮。然后再从最大的开始比,直至结束。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<ctype.h>
using namespace std;
int a[1010];
int b[1010];
int cmp(const void*a, const void*b) {
return *(int*)b-*(int*)a;
}
int main() {
int n;
while(scanf("%d", &n) != EOF && n) {
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
for (int i = 0; i < n; i++)
scanf("%d", &b[i]);

qsort(a, n, sizeof(int), cmp);
qsort(b, n, sizeof(int), cmp);

int sum = 0;
int h1 = 0, h2 = 0;
int t1 = n-1, t2 = n-1;
for (int i = 0; i < n; i++) {
if (a[h1] > b[h2]) {
sum += 200;
a[h1++] = b[h2++] = 0;
continue;
}
if (a[t1] > b[t2]) {
sum += 200;
a[t1--] = b[t2--] = 0;
continue;
}
if (a[t1] < b[h2]) {
sum -= 200;
a[t1--] = b[h2++] = 0;
continue;
}
}
printf("%d\n", sum);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  UVALive