hdu6000 Wash 巧妙地贪心
/**
题目:hdu6000 Wash 巧妙地贪心
链接:https://vjudge.net/contest/173364#problem/B
转自:http://blog.csdn.net/overload1997/article/details/54730156
题意:L件衣服,N个洗衣机,M个烘干机,给出每个洗衣机洗一件衣服的时间和烘干机烘干一件衣服的时间,问需要的最少时间是多少。
思路:这是ccpcfinal的题目,明显是贪心但是很难想出来,首先洗衣服所需的最短时间应该很容易想出来了,
用优先队列弹出下一次先洗完的时间就好了,问题在于烘干,正解应该是倒过来想,
假设全部洗完洪完所需的最小时间是x,那么在x时刻,烘干机全部都已经工作完毕了,
即烘干机全部空闲,那么我们把时间倒过来看,烘干过程等于洗衣服过程,用同样的方法算出最快烘干时间,
然后要最快的时间故肯定是小的+大的,最后取最大值就是我们想要的x了,思路有点复杂,很难说清楚,还是上代码吧。 转自:http://blog.csdn.net/overload1997/article/details/54730156
*/
#include<cstdio>
#include<iostream>
#include<vector>
#include<cstring>
#include<assert.h>
#include<algorithm>
#include<cmath>
#include<queue>
#define P pair<int,int>
using namespace std;
typedef long long LL;
const int maxn = 1e6+;
LL time[maxn];
struct node
{
LL a, b;
node(){}
node(LL a,LL b):a(a),b(b){}
bool operator < (const node&k)const{
return a+b>(k.a+k.b);
}
}top;
int main()
{
int T, L, n, m, cas=;
cin>>T;
while(T--)
{
scanf("%d%d%d",&L,&n,&m);
priority_queue<node> q;
LL t;
for(int i = ; i <= n; i++){
scanf("%lld",&t);
q.push(node(,t));
}
for(int i = ; i <= L; i++){
top = q.top();
q.pop();
time[i] = top.a+top.b;
top.a+=top.b;
q.push(top);
}
while(!q.empty()) q.pop();
for(int i = ; i <= m; i++){
scanf("%lld",&t);
q.push(node(,t));
}
LL ans = ;
for(int i = ; i <= L; i++){
top = q.top(); q.pop();
ans = max(ans,top.a+top.b+time[L-i+]);
top.a += top.b;
q.push(top);
}
printf("Case #%d: %lld\n",cas++,ans);
}
return ;
}
hdu6000 Wash 巧妙地贪心的更多相关文章
- hdu6000 Wash ccpc-20162017-finals B Wash
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6000 题目: Wash Time Limit: 20000/10000 MS (Java/Ot ...
- 8-4 奖品的价值 uva11491(贪心)
题意:给出一个n位整数 请删除d个数字 使得剩余数字最大 一开始写成窗口扫描 非常的麻烦易错 只要保证前d+1 降序即可 如果非降序 则删除 很巧妙的贪心 每次读入和已经保存的数组相比较 ...
- 【dp 贪心】bzoj4391: [Usaco2015 dec]High Card Low Card
巧妙的贪心 Description Bessie the cow is a huge fan of card games, which is quite surprising, given her l ...
- CF767E ChangeFree【贪心/优先队列】By cellur925
题目传送门 $naive$想法 最开始的一个贪心策略是每次尽量花掉硬币 ,如果不满足条件,就花纸币.而且不满足条件的时候,要尽量向百取整.(显然是不对的,因为有时候不够)但是显然这个贪心策略是错误的, ...
- [luogu] P4823 [TJOI2013]拯救小矮人(贪心)
P4823 [TJOI2013]拯救小矮人 题目描述 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以 ...
- HDU4864 Task(算竞进阶习题)
贪心 比较巧妙的贪心..先把所有机器和任务按时间是第一关键字,等级为第二关键字排序. 然后用机器去匹配每一个任务. 排序之后,在时间上满足当前任务的机器,必定也在时间上满足后面的机器,所以我们每次把时 ...
- C. Party Lemonade
链接 [http://codeforces.com/group/1EzrFFyOc0/contest/913/problem/C] 分析 看代码,巧妙的贪心 代码 #include<bits/s ...
- D. Dog Show 2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest, qualification stage (Online Mirror, ACM-ICPC Rules, Teams Preferred)
http://codeforces.com/contest/847/problem/D 巧妙的贪心 仔细琢磨... 像凸包里的处理 #include <cstdio> #include & ...
- [BZOJ1117]救火站gas
Description 给你一棵树,现在要建立一些消防站,有以下要求: 1. 消防站要建立在节点上,每个节点可能建立不只一个消防站. 2. 每个节点应该被一个消防站管理,这个消防站不一定建立在该节点上 ...
随机推荐
- C#高级编程八十二天----用户自己定义异常类
用户自己定义异常类 前面已经说了不少关于异常的问题了,如今来给大家说一下自己定义异常时咋个回事以及咋样. 为啥会出现自己定义异常类呢? 用用脚趾头想想也明确,是为了定义咱们自己的异常,自己定义异常 ...
- java 注解(自身理解)
声明注解 使用注解 解析注解 产生的结果 注解利用的是反射机制 ============================================================= 使用注解修饰 ...
- redis学习笔记——命令执行流程
基础知识部分 如果需要掌握Redis的整个命令的执行过程,那么必须掌握一些基本的概念!否则根本看不懂,下面我就一些在我看来必备的基础知识进行总结,希望能为后面命令的整个执行过程做铺垫. 事件 Redi ...
- Android系统常用的权限
开机自动允许 android.permission.RECEIVE_BOOT_COMPLETED,允许程序开机自动运行. 电量统计 android.permission.BATTERY_STATS ...
- Redis源代码分析(五)--- sparkline微线图
sparkline这个单词,我第一次看的时候.也不知道这什么意思啊,曾经根本没听过啊,可是这真真实实的出如今了redis的代码中了,刚刚開始以为这也是属于普通的队列嘛.就把他分在了struct包里了. ...
- WebService 之 WSDL详解
WSDL (Web Services Description Language,Web服务描述语言)是一种XML Application,他将Web服务描述定义为一组服务访问点,客户端可以通过这些服务 ...
- UVa145 Gondwanaland Telecom
Time limit: 3.000 seconds 限时:3.000秒 Problem 问题 Gondwanaland Telecom makes charges for calls accordin ...
- HDU 5296 Annoying problem
Annoying problem Time Limit: 16000/8000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- 算法笔记_077:蓝桥杯练习 K好数(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4, ...
- SpringMVC响应Restful风格请求404
在学习Springmvc时,使用Restful风格的url,页面提示404错误.为找到原因,编写一个简单的Restful测试用例如下: jsp页面: <a href="user/tes ...