UVA - 11389 The Bus Driver Problem

来源:互联网 发布:关于高中数学的软件 编辑:程序博客网 时间:2024/05/24 06:49

题目大意:有 n 个司机,n 条下午路线和n条晚上路线,先在要给每个司机安排一条下午路线和一条晚上路线,如果司机的工作时间超过 d,则要按照每小时 r 元增加加班费,问最少需支付多少加班费。

解题思路:贪心,下午最大的搭配晚上最小的,一次类推。

#include <cstdio>#include <algorithm>using namespace std;int main() {    int n, d, r;    while (scanf("%d%d%d", &n, &d, &r) && n + d + r) {        int M[110], E[110];        for (int i = 0; i < n; i++)            scanf("%d", &M[i]);        for (int i = 0; i < n; i++)            scanf("%d", &E[i]);        sort(M, M + n);        sort(E, E + n);        int ans = 0;        for (int i = 0; i < n; i++)            if (M[i] + E[n-i-1] > d)                ans += (M[i] + E[n-i-1] - d) * r;        printf("%d\n", ans);    }    return 0;}
0 0
原创粉丝点击