UVALive - 3266 Tian Ji -- The Horse Racing

来源:互联网 发布:淘宝卖零食要认证吗 编辑:程序博客网 时间:2024/06/14 23:02

题目大意:田忌赛马,牺牲慢马以获得最大利益,输入田忌的马速和秦王的马速,每一轮输的人要给赢的人 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;}
0 0
原创粉丝点击