bzoj 5088 Wash

本文探讨了在有限数量的洗衣机和烘干机下,如何通过贪心算法优化衣物的清洗和烘干流程,以达到最短总时间的目标。通过合理分配衣物和机器,实现效率最大化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你现在要洗L件衣服。你有n台洗衣机和m台烘干机。
由于你的机器非常的小,因此你每次只能洗涤(烘干)一件衣服。
第i台洗衣机洗一件衣服需要wi分钟,第i台烘干机烘干一件衣服需要di分钟。
请问把所有衣服洗干净并烘干,最少需要多少时间?
假设衣服在机器间转移不需要时间,并且洗完的衣服可以过一会再烘干
L<=10^6,N<=10^5,M<=10^5

显然洗衣服是贪心的能洗就洗,这样的话可以预处理每件衣服最少用多少时间洗完

由于需要最小化时间,所以将洗得慢的衣服和烘干的快的烘干机进行配对,一定是最优解

 1 #include "bits/stdc++.h"
 2 using namespace std;
 3 const int N = 1e6 + 10;
 4 typedef long long ll;
 5 ll a[N], ans;
 6 priority_queue<pair<ll, ll>, vector<pair<ll, ll> >, greater<pair<ll, ll> > > p1, p2;
 7 int main() {
 8     int L, n, m;
 9     scanf("%d%d%d", &L, &n, &m);
10     for(int i = 1, x ; i <= n ; ++ i) scanf("%d", &x), p1.push(make_pair(x, x));
11     for(int i = 1, x ; i <= m ; ++ i) scanf("%d", &x), p2.push(make_pair(x, x));
12     for(int i = 1 ; i <= L ; ++ i) {
13         a[i] = p1.top().first; ll t = p1.top().second;
14         p1.pop();
15         p1.push(make_pair(a[i] + t, t));
16     }
17     for(int i = L ; i ; -- i) {
18         ll x = p2.top().first, y = p2.top().second; p2.pop();
19         ans = max(ans, a[i] + x);
20         p2.push(make_pair(x + y, y));
21     }
22     printf("%lld\n", ans);
23 }
bzoj 5088 Wash

 

转载于:https://www.cnblogs.com/KingSann/articles/9526517.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值