加工生产调度
题目描述
某工厂收到了n个产品的订单,这n个产品分别在A、B两个车间加工,并且必须先在A车间加工后才可以到B车间加工。

某个产品i在A、B两车间加工的时间分别为Ai、Bi。询问怎样安排这n个产品的加工顺序,才能使总的加工时间最短。这里所说的加工时间是指:从开始加工第一个产品到最后所有的产品都已在A、B两车间加工完毕的时间。

输入格式:
第一行仅—个数据n(0<n<1000),表示产品的数量。

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

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

输出格式:
第一行一个数据,表示最少的加工时间。

第二行是n个整数,均为产品的原始标号,表示一种用时最短的产品加工顺序。

输入样例:
5
3 5 8 7 10
6 2 1 4 9
输出样例:
34
1 5 4 2 3

解析:

这是一道很经典的题,只需要记住这种题型的一个结论:

A机器上加工时间短的任务应优先,而在B机器上加工时间短的任务应该排在后面。

以下为证明过程:

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
const int M=1e6+10;
int n,m,sum,sum1=0,ans=0;
int w[M],a[M],b[M];
struct node
{int x,id;
} dp[M];
bool cmp(node u,node v)
{return u.x<v.x;
}
int main()
{scanf("%d",&n);for(int i=1; i<=n; i++)scanf("%d",&a[i]);for(int i=1; i<=n; i++)scanf("%d",&b[i]);for(int i=1; i<=n; i++)dp[i].id=i,dp[i].x=min(a[i],b[i]);sort(dp+1,dp+n+1,cmp);int x=1,y=n;for(int i=1; i<=n; i++){if(dp[i].x==a[dp[i].id])w[x++]=dp[i].id;elsew[y--]=dp[i].id;}for(int i=1; i<=n; i++){sum1+=a[w[i]];if(sum1>ans)ans=sum1;ans+=b[w[i]];}printf("%d\n",ans);for(int i=1; i<n; i++)printf("%d ",w[i]);printf("%d\n",w[n]);return 0;
}

#10003. 「一本通 1.1 例 4」加工生产调度(贪心)相关推荐

  1. 【C++】「一本通 1.1 例 4」加工生产调度

    「一本通 1.1 例 4」加工生产调度 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [数据范围] [解析] [代码] [来源] 一本通题库-1425 LibreOJ ...

  2. LibreOJ10082. 「一本通 3.3 例 1」Word Rings【二分+SPFA】

    10082. 「一本通 3.3 例 1」Word Rings [题目描述] 传送门 [题解] 将一个字符串看成一条边,字符两端的字符看成节点,长度看成权值.二分枚举答案,最后SPFA刷正环,因为只要有 ...

  3. 【C++】「一本通 1.1 例 2」种树

    「一本通 1.1 例 2」种树 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [解析] [代码] [来源] 一本通题库-1423 LibreOJ-10001 vjud ...

  4. #10001. 「一本通 1.1 例 2」种树

    #10001. 「一本通 1.1 例 2」种树 满足n个区间种树的要求,求最少种多少棵数 思路 按照区间的尾巴来排序,因为如果区间有重叠的种在第一个区间的尾巴可以使得种树更少,所有每次始从尾巴开始种树 ...

  5. 【C++】「一本通 1.1 例 5」智力大冲浪

    「一本通 1.1 例 5」智力大冲浪 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [数据范围] [解析] [代码] [来源] 一本通题库-1426 LibreOJ- ...

  6. Loj 10115 「一本通 4.1 例 3」校门外的树 (树状数组)

    题目链接:https://loj.ac/problem/10115 题目描述 原题来自:Vijos P1448 校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的 ...

  7. 「一本通 4.1 例 3」校门外的树 (loj10115)

    题目描述 原题来自:Vijos P1448 校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两种操作: K=1,读入 l,r表示在 l 到 r 之间种上 ...

  8. loj10157. 「一本通 5.2 例 5」皇宫看守

    思路: 例四是覆盖全部边,dp两个状态,例五是覆盖全部点,dp三个状态. #include<cstdio> #include<iostream> #include<cst ...

  9. #10019. 「一本通 1.3 例 2」生日蛋糕

    冥想盆 感性理解深搜剪枝(看完这个再看下面的文章) 理解本题的思路 [代码实现1:最慢最好理解(自己打的):100多ms] [代码实现2:次慢:30多ms] [代码实现3:最快:10多ms] 最后放上 ...

最新文章

  1. 梯度下降法Gradient Descent深度学习 机器学习
  2. Java 注解 Annotation
  3. python基础总结--- 列表、内置函数(4-5)
  4. 2017蓝桥c语言真题,[蓝桥杯][2017年第八届真题]发现环 (C语言代码)------------C语言——菜鸟级...
  5. JavaScript执行bat文件清理浏览器缓存
  6. 如何从SQL Server中的SELECT语句更新
  7. java获取不重复随机数_java实现生成不重复的随机数,可循环利用
  8. 2020最新淘宝等级表图及商品发布限制数量类目表
  9. 电商大促作战指南之全链路压测
  10. 机器学习之聚类——模糊聚类FCM
  11. 简述微处理器、微型计算机、微机系统的组成和三者间关系?
  12. win10从网络访问计算机没有guest,简单几步解决win10没有权限访问网络资源的问题...
  13. Linux回到桌面快捷键
  14. ct上的img表示什么_X线/CT/MR影像片子上的标识你是否都认识?
  15. activiti的initiator用法
  16. 电子技术课程设计-正弦波发生及频率显示电路-电子线路CAD原理图
  17. [论文翻译]Sparse R-CNN: End-to-End Object Detection with Learnable Proposals
  18. 腾讯伪原创视频需要改什么好处
  19. 【魔兽争霸3地图编辑】vJass 教程
  20. python——小例子 及 end=““ 和“t“的用法

热门文章

  1. Android之解决底部4个TextView占比例大小不一致问题
  2. linux shell之得到当前路径下的目录
  3. 剑指offer之反向打印链表值
  4. java之Synchronized(锁住对象和锁住代码)
  5. linux之gdb调试常用100个技巧
  6. Android之解决在非Activity中使用startActivity
  7. Android之图形图像之使用Path类总结
  8. Android之React Native平台与Android本地模块之间的调用
  9. 11选5下期算法_本周六周日【高二直播】辅导网课预告:通用技术电控二三极管、多用电表测量、数字逻辑电路、解析枚举递归算法,2022浙江选考技术...
  10. 华为交换机查看端口流量_华为交换机限速及流量统计配置