1007: 生产调度
Memory Limit:128 MB
Time Limit:1.000 S
Judge Style:Text Compare
Creator:
Submit:40
Solved:6
Description
某工厂收到了 n 个产品的订单,这 n 个产品分别在 A、B 两个车间加工,并且必须先在 A 车间加工后才可以到 B 车间加工。
某个产品 i 在 A,B 两车间加工的时间分别为Ai,Bi。怎样安排这 n 个产品的加工顺序,才能使总的加工时间最短。
这里所说的加工时间是指:从开始加工第一个产品到最后所有的产品都已在 A,B 两车间加工完毕的时间。
某个产品 i 在 A,B 两车间加工的时间分别为Ai,Bi。怎样安排这 n 个产品的加工顺序,才能使总的加工时间最短。
这里所说的加工时间是指:从开始加工第一个产品到最后所有的产品都已在 A,B 两车间加工完毕的时间。
Input
第一行仅—个数据 n ,表示产品的数量;
接下来 n 个数据是表示这 n 个产品在 A 车间加工各自所要的时间;
最后的 n 个数据是表示这 n 个产品在 B 车间加工各自所要的时间。
接下来 n 个数据是表示这 n 个产品在 A 车间加工各自所要的时间;
最后的 n 个数据是表示这 n 个产品在 B 车间加工各自所要的时间。
Output
第一行一个数据,表示最少的加工时间;
第二行是一种最小加工时间的加工顺序。
第二行是一种最小加工时间的加工顺序。
Sample Input Copy
5
3 5 8 7 10
6 2 1 4 9
Sample Output Copy
34
1 5 4 2 3
HINT
对于100%的数据, 0 < n < 10000,所有数值皆为整数。
A机器开始加工以后,直到加工完毕才会停下来。
因为必须先在A加工,所以有两个特殊的位置,A加工第一个的时候,B在等待;B加工最后一个的时候,A在等待:只有等B加工完了,任务才算结束。
所以,就要把A机器加工时间最短的部件最先加工,把B机器加工时间最短的部件,最后加工。
举例:
集合ai = {3、5、 8、7、10}
集合bi = {6、2、1、4、9}
集合 mi = min{ai,bi} {m1,m2,m3,m4,m5}= {3、2、1、4、9}
排序:{m3,m2,m1,m4,m5} = {1,2,3,4,9}
扫描集合mi,一次判断集合里的元素是属于ai集合,还是bi集合,
如:m3 = 1, 1是b集合元素,放在末尾{ , , , ,3}
m2 = 2, 2是b集合元素,放在末尾的前一个{ , , , 2,3}
m1 = 3, 3是a集合元素,放在第一个位置{ 1, , , 2,3}
... ...
这里放入新集合的是下标。
如果是ai集合,从前往后依次放,如果是bi集合,从后往前依次放,
最后得到的集合是{1、5、4、2、3},此为最优加工顺序。
A机器开始加工以后,直到加工完毕才会停下来。
因为必须先在A加工,所以有两个特殊的位置,A加工第一个的时候,B在等待;B加工最后一个的时候,A在等待:只有等B加工完了,任务才算结束。
所以,就要把A机器加工时间最短的部件最先加工,把B机器加工时间最短的部件,最后加工。
举例:
集合ai = {3、5、 8、7、10}
集合bi = {6、2、1、4、9}
集合 mi = min{ai,bi} {m1,m2,m3,m4,m5}= {3、2、1、4、9}
排序:{m3,m2,m1,m4,m5} = {1,2,3,4,9}
扫描集合mi,一次判断集合里的元素是属于ai集合,还是bi集合,
如:m3 = 1, 1是b集合元素,放在末尾{ , , , ,3}
m2 = 2, 2是b集合元素,放在末尾的前一个{ , , , 2,3}
m1 = 3, 3是a集合元素,放在第一个位置{ 1, , , 2,3}
... ...
这里放入新集合的是下标。
如果是ai集合,从前往后依次放,如果是bi集合,从后往前依次放,
最后得到的集合是{1、5、4、2、3},此为最优加工顺序。