洛谷P2751 [USACO4.2]工序安排Job Processing
P2751 [USACO4.2]工序安排Job Processing
- 18通过
- 78提交
- 题目提供者该用户不存在
- 标签
- 难度普及+/提高
提交 讨论 题解
最新讨论
- 暂时没有讨论
题目描述
一家工厂的流水线正在生产一种产品,这需要两种操作:操作A和操作B。每个操作只有一些机器能够完成。
Ioi96d1.gif
上图显示了按照下述方式工作的流水线的组织形式。A型机器从输入库接受工件,对其施加操作A,得到的中间产品存放在缓冲库。B型机器从缓冲库接受中间产品,对其施加操作B,得到的最终产品存放在输出库。所有的机器平行并且独立地工作,每个库的容量没有限制。每台机器的工作效率可能不同,一台机器完成一次操作需要一定的时间。
给出每台机器完成一次操作的时间,计算完成A操作的时间总和的最小值,和完成B操作的时间总和的最小值。
注:1、机器在一次操作中干掉一个工件; 2、时间总和的意思是最晚时间点
输入输出格式
输入格式:
第一行 三个用空格分开的整数:N,工件数量 (1<=N<=1000);M1,A型机器的数量 (1<=M1<=30);M2,B型机器的数量 (1<=M2<=30)。
第二行…等 M1个整数(表示A型机器完成一次操作的时间,1..20),接着是M2个整数(B型机器完成一次操作的时间,1..20)
输出格式:
只有一行。输出两个整数:完成所有A操作的时间总和的最小值,和完成所有B操作的时间总和的最小值(A操作必须在B操作之前完成)。
输入输出样例
输入样例#1:
5 2 3
1 1 3 1 4
输出样例#1:
3 5
说明
题目翻译来自NOCOW。
USACO Training Section 4.2
分析:因为要使最后结束的时间尽量提前,如果一个产品在A操作和B操作上用时非常短,那么必然会有一个A操作和B操作用时很长,这样的话不是最优解,我们就要想办法把这些时间平均,很显然,A操作第i个完成的配B操作第n-i+1个完成的(A操作和B操作都是排好序的,具体为什么,请继续看)
那么怎么求第i个产品在A操作和B操作上的用时呢?每个机器加工一个产品的个数都是一定的,要使A操作和B操作有序,那么就要使第i个产品最先完成,开一个数组表示每个机器当前的时间,找当前时间+1个产品的加工时间最少的插入就行.
回到上面,A操作第i个完成的配B操作第n-i+1个完成可以看做第i个产品在A机器上和B机器上所分配的最平均的时间.
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; int n, m1, m2,a[],b[],t[],t1[],t2[],cur,temp; int main()
{
scanf("%d%d%d", &n, &m1, &m2);
for (int i = ; i <= m1; i++)
scanf("%d", &a[i]);
for (int j = ; j <= m2; j++)
scanf("%d", &b[j]);
for (int i = ; i <= n; i++)
{
temp = ;
for (int j = ; j <= m1; j++)
if (t[j] + a[j] < temp)
{
temp = t[j] + a[j];
cur = j;
}
t[cur] = t1[i] = temp;
}
printf("%d ", temp);
memset(t, , sizeof(t));
for (int i = ; i <= n; i++)
{
temp = ;
for (int j = ; j <= m2; j++)
if (t[j] + b[j] < temp)
{
temp = t[j] + b[j];
cur = j;
}
t[cur] = t2[i] = temp;
}
int ans = ;
for (int i = ; i <= n; i++)
if (t1[i] + t2[n - i + ] > ans)
ans = t1[i] + t2[n - i + ];
printf("%d\n", ans);
//while (1); return ;
}
洛谷P2751 [USACO4.2]工序安排Job Processing的更多相关文章
- 洛谷 P2751 [USACO4.2]工序安排Job Processing 解题报告
P2751 [USACO4.2]工序安排Job Processing 题目描述 一家工厂的流水线正在生产一种产品,这需要两种操作:操作A和操作B.每个操作只有一些机器能够完成. 上图显示了按照下述方式 ...
- [USACO4.2]工序安排Job Processing
两种想法: (样例是真的良心,卡掉了两种错误做法)洗完一件马上塞一件到最快的空闲烘干机去?X,因为最后一件洗完的衣服决定了第二问的答案,但它并不一定得到最优待遇--最快的烘干机. 给最后一件洗完的 ...
- 洛谷P2751[USACO]工序安排
题目传送门 怎么说呢,这个题目我刚开始随便乱搞了几下,交了个暴力代码上去居然还水了49分,数据确实有点弱啊,然后看到洛谷上那位大佬Redbag的题解瞬间就佩服的五体投地,那真的是简洁.易懂又高效.直接 ...
- 洛谷P2751 工序安排Job Processing
题目 任务调度贪心. 需要明确一点,任务调度贪心题,并不是简单地应用排序的贪心,而是动态的运用堆,使每次选择是都能保持局部最优,并更新状态使得下次更新答案可以取到正确的最小值. 这是A过程的解. 然后 ...
- 洛谷P2738 [USACO4.1]篱笆回路Fence Loops
P2738 [USACO4.1]篱笆回路Fence Loops 11通过 21提交 题目提供者该用户不存在 标签USACO 难度提高+/省选- 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 ...
- 洛谷P2737 [USACO4.1]麦香牛块Beef McNuggets
P2737 [USACO4.1]麦香牛块Beef McNuggets 13通过 21提交 题目提供者该用户不存在 标签USACO 难度普及+/提高 提交 讨论 题解 最新讨论 暂时没有讨论 题目描 ...
- 洛谷 P1344 [USACO4.4]追查坏牛奶Pollutant Control 解题报告
P1344 [USACO4.4]追查坏牛奶Pollutant Control 题目描述 你第一天接手三鹿牛奶公司就发生了一件倒霉的事情:公司不小心发送了一批有三聚氰胺的牛奶.很不幸,你发现这件事的时候 ...
- 洛谷——P1894 [USACO4.2]完美的牛栏The Perfect Stall
P1894 [USACO4.2]完美的牛栏The Perfect Stall 题目描述 农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术.不幸的是,由于工程问题,每个牛栏都不一样.第一个星 ...
- 洛谷P2687 [USACO4.3]逢低吸纳Buy Low, Buy Lower
P2687 [USACO4.3]逢低吸纳Buy Low, Buy Lower 题目描述 “逢低吸纳”是炒股的一条成功秘诀.如果你想成为一个成功的投资者,就要遵守这条秘诀: "逢低吸纳,越低越 ...
随机推荐
- svn: E200030: sqlite[S10]: disk I/O error
1. 经遇到的问题,它出现(在我的情况下,至少)要与TortoiseSVN的相互作用.禁用TortoiseSVN的图标缓存(设置>图标重载>缓存“无”>申请)拥有的一切工作就好了 ( ...
- Hadoop学习2--Linux准备及环境准备
1.环境安装: 虚拟机:VMware Player 系统:Ubuntu12 注意事项:注意位数,包括系统,java,Hadoop 2.切换账号 当前登录账号是自己的账号,如果想切换到root,且是第一 ...
- 值得推荐的C/C++框架和库 (真的很强大)
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在Linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...
- Hibernate中get和load的区别
get获取的对象立即执行sql查询数据库中当前实体表中的数据,如果外键关联的其他实体表如果配置了懒加载关闭,则也会查询出外键关联的其他实体表中的数据,否则外键关联的其他实体表则以代理对象表示(称其为代 ...
- PageRank算法
PageRank,网页排名,又称网页级别,传说中是PageRank算法拯救了谷歌,它是根据页面之间的超链接计算的技术,作为网页排名的要素之一.它通过网络浩瀚的超链接关系来确定一个页面的等级.Googl ...
- NeHe OpenGL教程 第二十一课:线的游戏
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- centos下安装MySQL5.7
1.查找mysqlwhereis mysql 2.删除mysqlyum remove mysql mysql-server mysql-libs mysql-server;rm –rf /usr/li ...
- Python进阶09 动态类型
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 谢谢TeaEra, 猫咪cat 动态类型(dynamic typing)是Pyth ...
- code md5
using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptograph ...
- 玄机论坛Socket类库源码 当前版本 2.6.3 更新日期:10-09/2015 z
http://bbs.msdn5.com/thread-27-1-1.html 本类库采用TcpLister,TcpClient高度封装, 采用NetworkStream进行异步模式读取数据. 采用S ...