有n辆车, 4 * n个人, 1车上4个人, 每个车的车速不同, 每个人的吃饭速度也不同, 一辆车的四个人以吃饭最慢的那个人为准. 希望你平衡时间, 输出最长花费时间.
贪心, 模拟即可. 最快的车上吃饭最慢的人, 最慢的车上吃饭最快的人.
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int c[55], e[55]; //车的花费, 车上人吃东西的花费
int cost[4 * 55]; //所有人吃东西的花费
int main(void)
{int T; cin >> T;for (int t = 1; t <= T; ++t) {int n; scanf("%d", &n);for (int i = 1; i <= n; ++i) {scanf("%d", &c[i]);}for (int i = 1; i <= 4 * n; ++i) {scanf("%d", &cost[i]);}sort(cost + 1, cost + 1 + 4 * n);for (int i = 1; i <= n; ++i) {e[i] = *max_element(cost + 1 + (i - 1) * 4, cost + 1 + i * 4); //每4个选出一个最大值}sort(c + 1, c + 1 + n); sort(e + 1, e + 1 + n, greater<>()); //c和e一个小到大, 一个大到小for (int i = 1; i <= n; ++i) c[i] += e[i]; //总花费时间累计到一个数组上(也可以再开一个新的)const int res = *max_element(c + 1, c + 1 + n); //得到最大值printf("Trip #%d: %dn", t, res);}return 0;
}
本文发布于:2024-01-29 01:15:48,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170646215111668.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |