「雅礼集训 2017 Day4」洗衣服
题目
点这里看题目。
分析
首先考虑只有洗衣机的情况。我们可以想到,当前洗衣任务结束越早的洗衣机应该被先用,因此可以用堆来动态维护。
再考虑有烘干机的情况。很显然,越晚洗完的衣服应该越早烘干。因此我们可以按照处理洗衣机的方法,给衣服按照结束洗衣时间从大到小分配烘干机。
用一个堆对洗衣机和烘干机各维护一次,时间\(O(k\log_2n)\)。
代码
#include <queue>
#include <cstdio>
using namespace std;
typedef long long LL;
const int MAXN = 1e5 + 5, MAXK = 1e6 + 5;
template<typename _T>
void read( _T &x )
{
x = 0;char s = getchar();int f = 1;
while( s > '9' || s < '0' ){if( s == '-' ) f = -1; s = getchar();}
while( s >= '0' && s <= '9' ){x = ( x << 3 ) + ( x << 1 ) + ( s - '0' ), s = getchar();}
x *= f;
}
template<typename _T>
void write( _T x )
{
if( x < 0 ){ putchar( '-' ); x = ( ~ x ) + 1; }
if( 9 < x ){ write( x / 10 ); }
putchar( x % 10 + '0' );
}
template<typename _T>
_T MAX( const _T a, const _T b )
{
return a > b ? a : b;
}
struct ele
{
LL t; int indx;
ele() { t = indx = 0; }
ele( LL T, int I ) { t = T, indx = I; }
bool operator < ( const ele &b ) const { return ! ( t < b.t ); }
};
priority_queue<ele> q;
LL resA[MAXK], resB[MAXK];
int a[MAXN], b[MAXN];
int K, N, M;
int main()
{
ele h;
read( K ), read( N ), read( M );
for( int i = 1 ; i <= N ; i ++ ) read( a[i] );
for( int i = 1 ; i <= M ; i ++ ) read( b[i] );
for( int i = 1 ; i <= N ; i ++ ) q.push( ele( a[i], i ) );
for( int i = 1 ; i <= K ; i ++ )
{
h = q.top(), q.pop();
resA[i] = h.t, q.push( ele( h.t + a[h.indx], h.indx ) );
}
while( ! q.empty() ) q.pop();
for( int i = 1 ; i <= M ; i ++ ) q.push( ele( b[i], i ) );
for( int i = K ; i ; i -- )
{
h = q.top(), q.pop();
resB[i] = h.t, q.push( ele( h.t + b[h.indx], h.indx ) );
}
LL ans = 0;
for( int i = 1 ; i <= K ; i ++ ) ans = MAX( ans, resA[i] + resB[i] );
write( ans ), putchar( '\n' );
return 0;
}
「雅礼集训 2017 Day4」洗衣服的更多相关文章
- 2018.10.27 loj#6035. 「雅礼集训 2017 Day4」洗衣服(贪心+堆)
传送门 显然的贪心题啊...考试没调出来10pts滚了妙的一啊 直接分别用堆贪心出洗完第iii件衣服需要的最少时间和晾完第iii件衣服需要的最少时间. 我们设第一个算出来的数组是aaa,第二个是bbb ...
- LOJ#6035. 「雅礼集训 2017 Day4」洗衣服
传送门 先处理出每一件衣服最早什么时候洗完,堆+贪心即可 然后同样处理出每件衣服最早什么时候烘干 然后倒序相加取最大值 # include <bits/stdc++.h> using na ...
- LOJ #6035.「雅礼集训 2017 Day4」洗衣服 贪心
这道题的贪心好迷啊~我们对于两个过程进行单独贪心,然后再翻转一个,把这两个拼起来.先说一下单独贪心,单独贪心的话就是用一个堆,每次取出最小的,并且把这个最小的加上他单次的,再放进去.这样,我们得到的结 ...
- loj 6037 「雅礼集训 2017 Day4」猜数列 - 动态规划
题目传送门 传送门 题目大意 有一个位置数列,给定$n$条线索,每条线索从某一个位置开始,一直向左或者向右走,每遇到一个还没有在线索中出现的数就将它加入线索,问最小的可能的数列长度. 依次从左到右考虑 ...
- Loj 6036 「雅礼集训 2017 Day4」编码 - 2-sat
题目传送门 唯一的传送门 题目大意 给定$n$个串,每个串只包含 ' .问是否可能任意两个不同的串不满足一个是另一个的前缀. 2-sat的是显然的. 枚举每个通配符填0还是1,然后插入Trie树. 对 ...
- 【LOJ6036】 「雅礼集训 2017 Day4」编码
传送门 LOJ Solution 因为?只有两种可能为0,1,所以就把这两个串搞出来. 那么现在?取0和?取1不能并存,前缀不能并存,所以就是一个\(2-SAT\),现在问题在于这个东西可能会有很多条 ...
- LOJ #6037.「雅礼集训 2017 Day4」猜数列 状压dp
这个题的搜索可以打到48分…… #include <cstdio> #include <cstring> #include <algorithm> ; bool m ...
- LOJ #6036.「雅礼集训 2017 Day4」编码 Trie树上2-sat
记得之前做过几道2-sat裸体,以及几道2-sat前缀优化建图,这道题使用了前缀树上前缀树优化建图.我们暴力建图肯定是n^2级别的,那么我们要是想让边数少点,就得使用一些骚操作.我们观察我们的限制条件 ...
- LOJ_6045_「雅礼集训 2017 Day8」价 _最小割
LOJ_6045_「雅礼集训 2017 Day8」价 _最小割 描述: 有$n$种减肥药,$n$种药材,每种减肥药有一些对应的药材和一个收益. 假设选择吃下$K$种减肥药,那么需要这$K$种减肥药包含 ...
随机推荐
- ORA-12519,TNS:no appropriate service handler found的问题 超过连接数
http://www.2cto.com/database/201205/133542.html ORA-12519,TNS:no appropriate service handler found的问 ...
- 【新手引导】MAC如何允许安装任何来源的软件(安装第三方软件/应用)
1 打开系统偏好设置,找到安全性与隐私(第一行第六个) 2 进入安全性与隐私,点击左下角一个锁的按钮,输入自己电脑密码,允许从以下位置下载的应用: 新电脑应该是两个选项 1.APP store 2.A ...
- C#判断TCP连接状态
- web自动化之鼠标事件
鼠标操作from selenium.webdriver.common.action_chains import ActionChains通过ActionChains 类来完成鼠标操作主要操作流程:1. ...
- Java——异常处理,数据库连接
在学习数据库连接时看到try(){}结构,查了一下写在这里: import java.sql.Connection; import java.sql.DriverManager; import jav ...
- mysql 数据类型笔记
一. varchar存储规则: 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无 ...
- & 异步使用场景
异步的使用场景: 1.不涉及共享资源,或对共享资源只读,即非互斥操作 2.没有时序上的严格关系 3.不需要原子操作,或可以通过其他方式控制原子性 4.常用于IO操作等耗时操作,因为比较影响客户体验和使 ...
- 2019-ICCV-PDARTS-Progressive Differentiable Architecture Search Bridging the Depth Gap Between Search and Evaluation-论文阅读
P-DARTS 2019-ICCV-Progressive Differentiable Architecture Search Bridging the Depth Gap Between Sear ...
- 磨刀-CodeWarrior11生成的Makefile解析
https://mp.weixin.qq.com/s/plvviDFLsLQeg9ZeP_3WMA 一. 简介 Code Warrior 11是基于Eclipse CDT开发的集成开发环境(IDE ...
- 使用RTL进行硬件模型编程的局限性
https://mp.weixin.qq.com/s/Nj_d3hwgNX4kWVtKsqMSWg 硬件模型编程,即Hardware Model Programming.在RTL抽象级别 ...