博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
「一本通 1.1 例 4」加工生产调度
阅读量:6602 次
发布时间:2019-06-24

本文共 1886 字,大约阅读时间需要 6 分钟。

解题思路

这道题是Johnson双流水线调度算法的基础题。

本题是要求一个加工顺序使得总的加工时间最少,而要使加工时间最少,就是让各车间的空闲时间最少。一旦A车间开始加工,便会不停地进行加工(我们不要去管车间是否能够一直生产,因为他们有三班,可以24时间不停地运转)。关键是B车间在生产的过程中,有可能要等待A车间的初加工产品。很显然所安排的第一个产品在A车间加工时,B车间是要等待的,最后一个产品在B车间加工时,A车间已经完成了任务。

要使总的空闲时间最少:

(1)就要把在A车间加工时间最短的部件优先加工,这样使得B车间能以最快的速度开始加工;

(2)把放在B车间加工时间最短的产品放在最后加工,这样使得最后A车间的空闲时间最少。

#include 
#define _for(i,a,n) for(int i=a;i
>T;while(T--)#define close() ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)typedef long long ll;template
inline void read(T &x){bool Finish_read=0;x=0;int f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-')f=-1;if(ch==EOF)return;ch=getchar();}while(isdigit(ch))x=x*10+ch-'0',ch=getchar();x*=f;Finish_read=1;}template
inline void print(T x){if(x/10!=0)print(x/10);putchar(x%10+'0');}template
inline void writeln(T x){if(x<0)putchar('-');x=abs(x);print(x);putchar('\n');}template
inline void write(T x){if(x<0)putchar('-');x=abs(x);print(x);}using namespace std;const int maxn = 1e3;struct node { int id; //工作编号 int t; //工作时间 int ab; //所属哪台机器 inline bool operator < (const node &b) const { return t < b.t; } node(int _id = 0,int _t = 0,int _ab = 0):id(_id), t(_t), ab(_ab){} }arr[maxn + 5];int n, a[maxn + 5], b[maxn + 5], ans[maxn + 5], ti[maxn + 5];void Johnson(){ rep(i, 1, n) { if(a[i] < b[i]) arr[i] = node(i, a[i], 0); else arr[i] = node(i, b[i], 1); } sort(arr + 1, arr + n + 1); int l = 0, r = n + 1; rep(i, 1, n) { if(!arr[i].ab) ans[++l] = arr[i].id; else ans[--r] = arr[i].id; }}int main(){ read(n); rep(i, 1, n) read(a[i]); rep(i, 1, n) read(b[i]); Johnson(); rep(i, 1, n) ti[i] = ti[i - 1] + a[ans[i]]; int sum = ti[1] + b[ans[1]]; rep(i, 2, n) sum = max(sum, ti[i]) + b[ans[i]]; cout << sum << endl; _for(i, 1, n) cout << ans[i] << " "; cout << ans[n] <

转载于:https://www.cnblogs.com/mbath/p/10172101.html

你可能感兴趣的文章
事务使用中如何避免误用分布式事务(System.Transactions.TransactionScope)
查看>>
【iOS-Cocos2d游戏开发之十九】游戏数据存储的四种常用方式;
查看>>
如何查看已委派控制的用户及具体权限
查看>>
Kotlin从入门到放弃(四)——协程下
查看>>
You should be here !
查看>>
精品软件推荐 VMware Workstation Pro 12 中文版
查看>>
GEF:使用Draw2D画流程图-(上)
查看>>
使用CSVDE批量创建和修改域用户
查看>>
为什么在SharePoint站点上方把我的名字显示成“系统帐户”?
查看>>
【实战】烂泥:解决无法找到"txfile:platformres:msgmgr\msgmgr.htm"
查看>>
《图论》——图的存储与遍历(Java)
查看>>
一招一式攻克linux(三)
查看>>
IT运维管理——流程与表单定义
查看>>
WP下ListBox的绑定和效果
查看>>
Powershell管理系列(三十一)PowerShell操作之批量创建邮箱
查看>>
【REACT NATIVE 系列教程之十】真机运行报错COMMAND /BIN/SH FAILED WITH EXIT CODE 1 的解决方法...
查看>>
SEO外链算法独家揭秘
查看>>
[MySQL优化案例]系列 -- OPTIMIZE的威力
查看>>
Apache2 之虚拟主机设置指南
查看>>
Linux系统开机过程解释笔记
查看>>