1425:【例题4】加工生产调度

时间限制: 1000 ms 内存限制: 65536 KB
提交数: 2047 通过数: 529
【题目描述】
某工厂收到了 n 个产品的订单,这 n 个产品分别在 A、B 两个车间加工,并且必须先在 A 车间加工后才可以到 B 车间加工。

某个产品 i 在 A,B 两车间加工的时间分别为Ai,Bi。怎样安排这 n 个产品的加工顺序,才能使总的加工时间最短。

这里所说的加工时间是指:从开始加工第一个产品到最后所有的产品都已在 A,B 两车间加工完毕的时间。

【输入】
第一行仅—个数据 n ,表示产品的数量;

接下来 n 个数据是表示这 n 个产品在 A 车间加工各自所要的时间;

最后的 n 个数据是表示这 n 个产品在 B 车间加工各自所要的时间。

【输出】
第一行一个数据,表示最少的加工时间;

第二行是一种最小加工时间的加工顺序。

【输入样例】
5
3 5 8 7 10
6 2 1 4 9
【输出样例】
34
1 5 4 2 3
【提示】
对于100%的数据, 0 < n < 10000,所有数值皆为整数。


思路 :要使机器总的空闲时间最短,就要把在A机器上加工时间最短的部件最先加工,这样使得B机器能在最短的空闲时间内开始加工;把在B机器上加工时间最短的部件放在最后加工,这样使得A机器用最短时间等待B机器完工.将M按照从小到大的顺序排序,然后从第1个开始处理,若Mi=ai,则将它排在从头开始的作业后面,若Mi=bi,则将它排在从尾开始的作业前面。
例如:N = 5,
{a1,a2,a3,a4,a5} =(3,5,8,7,10);
{b1,b2,b3,b4,b5} =(6,2,1,4,9);
则(m1 ,m2,m3 ,m4,m5) =(3,2,1,4,9);
排序后;(m3, m2,m1 ,m4,m5);
处理m3:因为m3 = b3 所以m3排在后面,加入m3之后的加工顺序为{,,,,3}
处理m2:因为m2 = b2 所以m2排在后面,加入m2之后的加工顺序为{,,,2,3}
处理m1:因为m1 = a1 所以m1排在前面,加入m1之后的加工顺序为{1,,,2,3}
处理m4:因为m4 = b4 所以m4排在后面,加入m4之后的加工顺序为{1,,4,2,3}
处理m5:因为m5 = b5 所以m5排在后面,加入m5之后的加工顺序为{1,5,4,2,3}
则{1,5,4,2,3}为最优工序。最短时间为34

算法证明:略

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define N 1005
using namespace std;int ans[N],n,k,i,j,t,a[N];
int b[N],m[N],s[N];void  read(){int i;cin >> n;for(i = 1; i <=  n; i++)cin  >> a[i];for(i = 1; i <=  n; i++)cin  >> b[i];
}
void solve(){for(i = 1; i <= n;i++){m[i] = min(a[i],b[i]);s[i] = i;}for(i = 1; i <= n-1;i++)//产品从小到大排序for(j =i + 1; j<= n; j++)if(m[i] >  m[j]){swap(m[i],m[j]);swap(s[i],s[j]);
}
k = 0,t = n + 1;
for(i = 1;  i <= n;i++)//安排产品加工顺序
if(m[i] == a[s[i]])
{k++;ans[k]  = s[i];}
else{t--;ans[t] = s[i];
}
k = 0 ; t = 0;//k为A加工时间,t为B加工时间
for(i = 1;  i <= n;i++){k += a[ans[i]];if(t < k) t = k;t += b[ans[i]];
}
cout << t << endl;
for(i = 1; i <= n; i++)
cout << ans[i] << " ";
cout << endl;
}
int  main(){read();solve(); return 0;
}

第1部分 基础算法(提高篇)--第1章 贪心算法1425:【例题4】加工生产调度相关推荐

  1. 第2部分 字符串算法(提高篇)--第2章 KMP算法1469:似乎在梦中见过的样子

    1469:似乎在梦中见过的样子 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 476 通过数: 159 [题目描述] 原题来自:2014 年湖北省队互测 Week2 「Madok ...

  2. 【Java数据结构与算法】第十九章 贪心算法、Prim算法和Kruskal算法

    第十九章 贪心算法.Prim算法和Kruskal算法 文章目录 第十九章 贪心算法.Prim算法和Kruskal算法 一.贪心算法 1.介绍 2.支付问题 二.Prim算法 1.最小生成树 2.介绍 ...

  3. 《算法导论》第16章 贪心算法 个人笔记

    第16章 贪心算法 16.1 活动选择问题 问题:假设有一个n个活动的集合S=a1,a2,...,anS={a_1,a_2,...,a_n},这些活动使用同一个资源,而这个资源在某个时刻只能供一个活动 ...

  4. 【信息学奥赛一本通 提高组】第一章 贪心算法

    一.贪心算法的特点: 1.贪心选择: 所谓贪心选择是指应用同一规则,将原问题变为一个相似的但规模更小的子问题,而后的每一步都是当前看似最佳的选择,且这种选择只依赖于已做出的选择,不依赖未做出的选择. ...

  5. 第2部分 字符串算法(提高篇)--第1章 哈希和哈希表1463:门票

    1463:门票 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 842 通过数: 172 [题目描述] RPK 要带 MSH 去一个更加神秘的地方! RPK 带着 MSH 穿过广场 ...

  6. 算法设计与分析第3章 贪心算法

    第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...

  7. 数据结构与算法_02_局部最优的贪心算法

    数据结构与算法,系列文章传送地址,请点击本链接. 目录 一.贪心思想 二.解贪心算法的步骤 三.贪心算法存在的问题 四.贪心算法的案例 一.贪心思想 ​ 1.贪心算法(又称贪婪算法)是指,在对问题求解 ...

  8. 第四十一章 贪心算法——排序不等式

    第四十一章 贪心算法--排序不等式 一.题目信息 二.排序不等式 1.算法内容 2.算法证明 3.思路分析 三.代码实现 一.题目信息 二.排序不等式 1.算法内容 2.算法证明 3.思路分析 这道题 ...

  9. 提高篇 第一部分 基础算法 第1章 贪心算法

    一本通提高篇在线提交地址 一本通提高篇在线提交地址_老象的专栏-CSDN博客 [ 贪心 进阶总结 ][ 来自一本通提高篇 ] [ 贪心 进阶总结 ][ 来自一本通提高篇 ]_violinwang-CS ...

最新文章

  1. hibernate annotations和hbm.xml配置文件在spring中的并存配置
  2. 我是如何面试别人List相关知识的
  3. 荆州水文水位查询_【心能源】天欣公司矿井水文自动观测系统投入使用
  4. 外卖小程序源码-带流量主-个人用户可接入
  5. Linux的shell编程(三)
  6. 遇到一个Linux文件系统因bios时间错误变成只读的问题
  7. 微信小程序-setData()方法
  8. HashMap的五种遍历方法
  9. Struts2学习笔记(四) Action(中)
  10. 这里90%的程序员根本就不算程序员。
  11. 如果安卓和linux融合,今年手机厂商大吹特吹的内存融合技术,其实十年前网友就玩腻了...
  12. Office 2016中修改正文默认字体
  13. Centos7安装iNode客户端
  14. win7计算机个性化设置,Win7系统如何进行个性化设置 Win7系统个性化设置方法【详解】...
  15. flashfxp连接centos7失败原因之一
  16. 股票数据Scrapy爬虫-Python网络爬虫与信息提取-北京理工大学嵩天教授
  17. 深圳保障性住房【公租房、安居房、人才房】简单说明
  18. linux系统下questasim 10.7安装教程
  19. skylake服务器处理器M系列,详解第6代英特尔酷睿M处理器!
  20. 【ArcGIS微课1000例】0038:注记(Annotation)的使用方法

热门文章

  1. MySQL - 设计游戏用户信息表
  2. 循环神经网络教程第二部分-用python,numpy,theano实现一个RNN
  3. FI凭证冲销(蓝冲、红冲)和反记账后台配置
  4. python 董付国_Python 董付国
  5. 算法入门经典例题3-2,例题3-3知识点
  6. BIM模型文件下载——三层江湖别墅
  7. 一群小朋友在玩老鹰捉小鸡
  8. Symmetric 配置数据库同步
  9. python中seed的用法什么作用_Python中的seed()方法怎么用
  10. 用html写京东网页,实现部分功能