Wash!!(HDU_6000)
传送门:Wash!
题意:有n台洗衣机,m台烘干机,给出了每台机器处理意见衣服的时间,而且没见机器同时只能处理一件衣服。问如何选择机器才能使洗完衣服的时间最短。
思路:建两个优先队列,一个表示洗衣机,一个表示烘干机。每次取出最少工作时间的机器来进行洗衣,并将工作结束的时间加上处理一件衣服的时间。最后一件洗完的衣服对应着最长的结束时间,只有加上最短的烘干时间才能得到最短的结果。以此类推,倒数第二件衣服也是加上最短的烘干时间才可以得到最短时间。
贪心:前后的最长时间+最短时间得到的结果,要比从前往后最短的时间相加加到最后是最长的时间相加的结果短。
PS:注意数据范围的大小。
代码:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e7+;
typedef long long ll;
struct node
{
ll x;//工作时间
ll en;//工作到目前为止的结束时间
friend bool operator<(node a,node b)
{
return a.en > b.en;
}
} tmp;
priority_queue<node> wash;
priority_queue<node> dry;
int l,n,m;
ll a[maxn]; int main()
{
int T,cnt = ;
scanf("%d",&T);
while(T--)
{
while(!wash.empty()) wash.pop();
while(!dry.empty())dry.pop();
scanf("%d%d%d",&l,&n,&m);
for(int i = ; i<n; i++)
{
scanf("%lld",&tmp.x);
tmp.en = tmp.x;
wash.push(tmp);
}
for(int i = ; i<m; i++)
{
scanf("%lld",&tmp.x);
tmp.en = tmp.x;
dry.push(tmp);
}
for(int i = ; i<l; i++)
{
tmp = wash.top();//取出最短工作时间的机器来洗衣服
a[i] = tmp.en;
tmp.en += tmp.x;//结束时间加一段工作时间
wash.pop();
wash.push(tmp);//工作结束后投入等待序列
}
ll ans = ;
for(int i=l-; i>=; i--)
{
tmp = dry.top();
ans = max(ans, a[i]+tmp.en);//更新洗衣服的结束时间
tmp.en += tmp.x;
dry.pop();
dry.push(tmp);
}
printf("Case #%d: %lld\n",cnt++,ans);
}
return ;
}
/*
样例输入:
2
1 1 1
1200
34
2 3 2
100 10 1
10 10
样例输出:
Case #1: 1234
Case #2: 12
*/
Wash!!(HDU_6000)的更多相关文章
- DevSecOps 实施篇!系列(二)
想在自己公司建立 DevSecOps 计划?没问题,企业规模无论大小,都可轻松实现.这里有5个基本的 DevSecOps 原则可以帮助你启动.当然,如果你对 DevSecOps 还不太熟悉,不妨先看看 ...
- 利用Matlab自带的深度学习工具进行车辆区域检测与车型识别【Github更新!!!】(三)
前言 对前面的东西更新了一下.地方包括: 1.GUI的更新,更友好的用户界面 2.支持用手直接画车辆区域,并且识别出来 3.将proposal.detect.fine-grained classifi ...
- PAT乙级真题1003. 我要通过!(20)(解题)
“答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1 ...
- 好!recover-binary-search-tree(难)& 两种好的空间O(n)解法 & 空间O(1)解法
https://leetcode.com/mockinterview/session/result/xyc51it/https://leetcode.com/problems/recover-bina ...
- Java注解(Annotation):请不要小看我!
Java注解是一系列元数据,它提供数据用来解释程序代码,但是注解并非是所解释的代码本身的一部分.注解对于代码的运行效果没有直接影响. 网络上对注解的解释过于严肃.刻板,这并不是我喜欢的风格.尽管这样的 ...
- TypeScript: Angular 2 的秘密武器(译)
本文整理自Dan Wahlin在ng-conf上的talk.原视频地址: https://www.youtube.com/watch?v=e3djIqAGqZo 开场白 开场白主要分为三部分: 感谢了 ...
- 理解Docker(4):Docker 容器使用 cgroups 限制资源使用
本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
- NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装
一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经 ...
- NoSQL初探之人人都爱Redis:(2)Redis API与常用数据类型简介
一.Redis API For .Net 首先,不得不说Redis官方提供了众多的API开发包,但是目前Redis官方版本不支持.Net直接进行连接,需要使用一些第三方的开源类库.目前最流行的就是Se ...
随机推荐
- xml中运用js和jq
1.点击事件参数为this 一般<a>标签中会使用href和onclick两种方式来进行进行页面跳转或执行动作,但是小编一般都会使用onclick来进行执行Ajax函数进行跳转,并同时使用 ...
- mysql之SQL入门与提升(一)
一.基本的增删改查 1.1首先建一张表 DROP TABLE IF EXISTS `websites`;CREATE TABLE `websites` ( `id` int(11) NOT NULL ...
- Java语言和虚拟机规范下载
- idea下载
- Linux - 查看并修改当前的系统时间
转载自Linux系统查看当前时间的命令 查看和修改Linux的时区 查看当前时区 命令 : date -R 修改设置Linux服务器时区 方法 A 命令 : tzselect 方法 B 仅限于RedH ...
- python错误之RuntimeError: dictionary changed size during iteration
pythonn报错信息: C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\python.exe C:/Users/Ad ...
- 抛出异常-throws和throw
package com.mpp.test; import java.util.Scanner; public class TryDemoFour { public static void main(S ...
- Machine Learning Codeforces - 940F(带修莫队) && 洛谷P4074 [WC2013]糖果公园
以下内容未验证,有错请指正... 设块大小为T,则块数为$\frac{n}{T}$ 将询问分为$(\frac{n}{T})^2$块(按照左端点所在块和右端点所在块分块),同块内按时间从小到大依次处理 ...
- 转 open_cursors参数设置调优
https://www.cnblogs.com/Peyton-for-2012/archive/2013/05/07/3065058.html
- Exception in thread "main" java.lang.SecurityException: class "javax.servlet.FilterRegistration"'s signer information does not match signer information of other classes in the same package解决办法(图文详解)
不多说,直接上干货! 问题详情 SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF ...