codevs3008加工生产调度(Johnson算法)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,ans[],a[],b[],sum,ti[];
struct node//三元组结构
{
int o;//工作编号
int t;//时间
int ab;//在哪个机器
}job[];
int cmp(const node &x,const node &y)
{
return x.t<y.t;
}
void Johnson()
{
int i;
for(i=;i<=n;i++)//生成三元组表job
if(a[i]<b[i])
{
job[i].ab=;
job[i].o=i;
job[i].t=a[i];
}
else
{
job[i].ab=;
job[i].o=i;
job[i].t=b[i];
}
sort(job+,job++n,cmp);//排序(按t由小到大)
int l=,r=n+;
for(i=;i<=n;i++)//生成最优解
if(job[i].ab==)ans[++l]=job[i].o;
else ans[--r]=job[i].o;
}
int main()
{
cin>>n;
int i;
for(i=;i<=n;i++)
cin>>a[i];
for(i=;i<=n;i++)
cin>>b[i];
Johnson();//生成最优解
for(i=;i<=n;i++)//计算最少时间
ti[i]=ti[i-]+a[ans[i]];
sum=ti[]+b[ans[]];
for(i=;i<=n;i++)
sum=max(sum,ti[i])+b[ans[i]];
cout<<sum;
return ;
}
codevs3008加工生产调度(Johnson算法)的更多相关文章
- Codevs3008 加工生产调度
题目大意:某工厂收到了n个产品的订单,这n个产品分别在A.B两个车间加工,而且必须先在A车间加工后才干够到B车间加工. 求如何安排这n个产品的加工顺序.才干使总的加工时间最短. 这里所说的加工时间是指 ...
- 【流水调度问题】【邻项交换对比】【Johnson法则】洛谷P1080国王游戏/P1248加工生产调度/P2123皇后游戏/P1541爬山
前提说明,因为我比较菜,关于理论性的证明大部分是搬来其他大佬的,相应地方有注明. 我自己写的部分换颜色来便于区分. 邻项交换对比是求一定条件下的最优排序的思想(个人理解).这部分最近做了一些题,就一起 ...
- 「一本通 1.1 例 4」加工生产调度(贪心算法)(luogu P1248)题解
加工生产调度 题目描述 某工厂收到了 n n n 个产品的订单,这 n n n 个产品分别在 A.B 两个车间加工,并且必须先在 A 车间加工后才可以到 B 车间加工. 某个产品 i i i 在 A. ...
- 洛谷P1248 加工生产调度
流水作业调度问题 有\(N\)个作业要在两台机器\(M_1\)和\(M_2\)组成的流水线上完成加工.每个作业\(i\)都必须先花时间\(a_i\)在\(M_1\)上加工,然后花时间\(b_i\)在\ ...
- codevs 3008 加工生产调度[贪心]
3008 加工生产调度 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 某工厂收到了n个产品的订 ...
- CODEVS——T3008 加工生产调度
http://codevs.cn/problem/3008/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Descr ...
- 加工生产调度(prod)
加工生产调度(prod) 题目描述 有n个部件需在A.B机器上加工,每个工件都必须经过先A后B两道工序. 已知:部件i在A.B机器上的加工时间分别为ai,bi. 问:如何安排n个工件的加工顺序,才能使 ...
- Johnson算法:多源最短路算法
Johnson算法 请不要轻易点击标题 一个可以在有负边的图上使用的多源最短路算法 时间复杂度\(O(n \cdot m \cdot log \ m+n \cdot m)\) 空间复杂度\(O(n+m ...
- Johnson算法学习笔记
\(Johnson\)算法学习笔记. 在最短路的学习中,我们曾学习了三种最短路的算法,\(Bellman-Ford\)算法及其队列优化\(SPFA\)算法,\(Dijkstra\)算法.这些算法可以快 ...
随机推荐
- IOS各类问题
1.The resource could not be loaded because the App Transport Security policy requires the use of a s ...
- centos挂存储
#看硬盘有木 fdisk -l #格式化 parted /dev/sdb mklabel gpt print quit #如果多个分区执行 如果不要么 #mkpart primary 0 4.5T ...
- gcc常用的编译选项
一.程序编译过程 程序编译的时候,要分四个阶段 : 1.预处理阶段,完成宏定义和include文件展开等工作: 2.根据编译参数进行不同程度的优化,编译成汇编代码: 3.用汇编器把汇编代码进一步生成目 ...
- Numpy基础笔记
Numpy简介 Numpy(Numerical Python的简称)是高性能科学计算和数据分析的基础包.其部分功能如下: ①ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 ...
- 【Linux】鸟哥的Linux私房菜基础学习篇整理(十)
1. at [-mldv] TIME/at -c 工作号码:单一工作调度.参数:-m:当at的工作完成后,即使没有输出信息,以email通知用户该工作已完成:-l:相当于atq,列出目前系统上面的所有 ...
- JFS与JFS2的区别
请问一下JFS与JFS2的区别? 支持最大的文件? 普通JFS:2G:支持大文件JFS:64G:JFS2:1T 支持最大的文件系统?普通JFS,支持大文件JFS,JFS2分别是多大呢? The max ...
- 在VC中集成cURL
libcurl 库的代码是完全开源的,但是我们一般不会在项目中直接引入它的源代码,而是通过动态链接库隐式链接的方式引入 libcrul 库.也就是说,我们需要在自己的项目中引入 libcrul 相关的 ...
- spj题
S(SNO,SNAME,SCITY) ,P(PNO,PNAME,COLOR,WEIGHT) ,J(JNO,JNAME,JCITY),其中S表示供应商,它的各属性依次为供应商号,供应商名,供应商所在城市 ...
- enigma机的原理
注:本文修改自三思科学<ENIGMA的兴亡> ENIGMA ENIGMA看起来是一个装满了复杂而精致的元件的盒子.不过要是我们把它打开来,就可以看到它可以被分解成相当 ...
- C++的一些内置函数
C++里面有一些内置函数,实现了一些常用功能.虽然我手写也能写出这些函数,但是在srm或者其他一些需要速度的地方,用内置函数的优势就能体现出来了. 1.__gcd(a, b),返回a,b的最大公约数, ...