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的更多相关文章

  1. 洛谷 P2751 [USACO4.2]工序安排Job Processing 解题报告

    P2751 [USACO4.2]工序安排Job Processing 题目描述 一家工厂的流水线正在生产一种产品,这需要两种操作:操作A和操作B.每个操作只有一些机器能够完成. 上图显示了按照下述方式 ...

  2. [USACO4.2]工序安排Job Processing

    两种想法: (样例是真的良心,卡掉了两种错误做法)洗完一件马上塞一件到最快的空闲烘干机去?X,因为最后一件洗完的衣服决定了第二问的答案,但它并不一定得到最优待遇--最快的烘干机.   给最后一件洗完的 ...

  3. 洛谷P2751[USACO]工序安排

    题目传送门 怎么说呢,这个题目我刚开始随便乱搞了几下,交了个暴力代码上去居然还水了49分,数据确实有点弱啊,然后看到洛谷上那位大佬Redbag的题解瞬间就佩服的五体投地,那真的是简洁.易懂又高效.直接 ...

  4. 洛谷P2751 工序安排Job Processing

    题目 任务调度贪心. 需要明确一点,任务调度贪心题,并不是简单地应用排序的贪心,而是动态的运用堆,使每次选择是都能保持局部最优,并更新状态使得下次更新答案可以取到正确的最小值. 这是A过程的解. 然后 ...

  5. 洛谷P2738 [USACO4.1]篱笆回路Fence Loops

    P2738 [USACO4.1]篱笆回路Fence Loops 11通过 21提交 题目提供者该用户不存在 标签USACO 难度提高+/省选- 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 ...

  6. 洛谷P2737 [USACO4.1]麦香牛块Beef McNuggets

    P2737 [USACO4.1]麦香牛块Beef McNuggets 13通过 21提交 题目提供者该用户不存在 标签USACO 难度普及+/提高 提交  讨论  题解 最新讨论 暂时没有讨论 题目描 ...

  7. 洛谷 P1344 [USACO4.4]追查坏牛奶Pollutant Control 解题报告

    P1344 [USACO4.4]追查坏牛奶Pollutant Control 题目描述 你第一天接手三鹿牛奶公司就发生了一件倒霉的事情:公司不小心发送了一批有三聚氰胺的牛奶.很不幸,你发现这件事的时候 ...

  8. 洛谷——P1894 [USACO4.2]完美的牛栏The Perfect Stall

    P1894 [USACO4.2]完美的牛栏The Perfect Stall 题目描述 农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术.不幸的是,由于工程问题,每个牛栏都不一样.第一个星 ...

  9. 洛谷P2687 [USACO4.3]逢低吸纳Buy Low, Buy Lower

    P2687 [USACO4.3]逢低吸纳Buy Low, Buy Lower 题目描述 “逢低吸纳”是炒股的一条成功秘诀.如果你想成为一个成功的投资者,就要遵守这条秘诀: "逢低吸纳,越低越 ...

随机推荐

  1. MSSQL update 多表关联更新

    update tMeter set 字段= t.源自段 from ( select * from 源表信息 ) t where 关联条件 实际demo: UPDATE dbo.WX_TWODIMENC ...

  2. 简单实例讲解linux的module模块编译步骤

    注:原博文地址http://blog.sina.com.cn/s/blog_4ba5b45e0102v25h.html ---------------------------------------- ...

  3. Web上传文件

      客户端      相对于FTP文件上传,Web文件上传速度慢一些,但使用方便,不需要客户端,而且权限比FTP容易控制. Web文件上传采用POST方式,上传文件需要设置FORM的entype属性为 ...

  4. 关于List泛型的强制转换

    当我们从数据库中查询出一些数据,有时返回的结果可能是List<Object>类型,而我们清楚的知道它的准确类型是List<User>,可能我们想直接的去进行类型的转换,你可能会 ...

  5. 1分钟内检查Linux服务器性能的命令

    1.uptime 在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量. 2.dmesg|tail 命令会输出系统日志的最后10行,这些日志都可以排查性能 ...

  6. Tesseract训练笔记

    [参考] http://www.cnblogs.com/samlin/p/Tesseract-OCR.html https://code.google.com/p/tesseract-ocr/wiki ...

  7. Memcache 问题集锦

    Memcached 集群架构方面的问题 这里收集了经常被问到的关于memcached的问题 memcached是怎么工作的? memcached最大的优势是什么? memcached和MySQL的qu ...

  8. 在eclipse中下载包含子模块(Submodules)的git项目

    先将项目下载下来 , 这时由于是子项目的原因 , 下载的项目中不包含任何子项目 . 这时在eclipse的Git Repositories中 , 选中Submodules , 右键点击update即可 ...

  9. 在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程

    在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现本地文件上传流程 by shuijingwan · 2016/01/13 1.SDK安装 github ...

  10. 真正的轻量级WebService框架——使用JAX-WS(JWS)发布WebService

    WebService历来都很受重视,特别是Java阵营,WebService框架和技术层出不穷.知名的XFile(新的如CXF).Axis1.Axis2等. 而Sun公司也不甘落后,从早期的JAX-R ...