Fujiyama Thursday

题目连接: Fujiyama Thursday

大致题意:

有n辆车, 4 * n个人, 1车上4个人, 每个车的车速不同, 每个人的吃饭速度也不同, 一辆车的四个人以吃饭最慢的那个人为准. 希望你平衡时间, 输出最长花费时间.

解题思路:

贪心, 模拟即可. 最快的车上吃饭最慢的人, 最慢的车上吃饭最快的人.

AC代码:

#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: %d\n", t, res);
	}
	return 0;
}

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逍遥Fau

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值