【C++】「一本通 1.1 例 4」加工生产调度
「一本通 1.1 例 4」加工生产调度
- 【来源】
- 【题目描述】
- 【输入格式】
- 【输出格式】
- 【输入样例】
- 【输出样例】
- 【数据范围】
- 【解析】
- 【代码】
【来源】
一本通题库-1425
LibreOJ-10003
vjudge
注意:LibreOJ和一本通题库题意相同,但数据范围不同。代码以一本通题库为准。
【题目描述】
某工厂收到了 nnn 个产品的订单,这 nnn 个产品分别在 A、BA、BA、B 两个车间加工,并且必须先在 AAA 车间加工后才可以到 BBB 车间加工。
某个产品 iii 在 A,BA,BA,B 两车间加工的时间分别为Ai,BiA_i,B_iAi,Bi。怎样安排这 nnn 个产品的加工顺序,才能使总的加工时间最短。
这里所说的加工时间是指:从开始加工第一个产品到最后所有的产品都已在 A,BA,BA,B 两车间加工完毕的时间。
【输入格式】
第一行仅—个数据 nnn ,表示产品的数量;
接下来 nnn 个数据是表示这 nnn 个产品在 AAA 车间加工各自所要的时间;
最后的 nnn 个数据是表示这 nnn 个产品在 BBB 车间加工各自所要的时间。
【输出格式】
第一行一个数据,表示最少的加工时间;
第二行是一种最小加工时间的加工顺序。
【输入样例】
5
3 5 8 7 10
6 2 1 4 9
【输出样例】
34
1 5 4 2 3
【数据范围】
对于100100100%的数据, 0<n<100000 < n < 100000<n<10000,所有数值皆为整数。
【解析】
贪心。
要使总加工时间最少就是让车间的空闲时间最少,就要把在A车间加工所需时间最少的产品先加工,把在B车间加工所需时间最少的产品后加工。
设AiA_iAi为第iii个产品在AAA车间加工所需时间,BiB_iBi为第iii个产品在BBB车间加工所需时间。
贪心策略: 令Mi.numM_i.numMi.num=min(Ai,Bi)min(A_i,B_i)min(Ai,Bi),将M从小到大排序,从第一个开始处理,如果Mi=AiM_i=A_iMi=Ai,将它排在从头开始加工的产品后面,如果Mi=BiM_i=B_iMi=Bi,则将它排在从尾开始加工的产品前面。
【代码】
#pragma GCC optimize(3,"Ofast","inline")
#pragma G++ optimize(3,"Ofast","inline")#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>#define RI register int
#define re(i,a,b) for(RI i=a; i<=b; i++)
#define ms(i,a) memset(a,i,sizeof(a))
#define MAX(a,b) (((a)>(b)) ? (a):(b))
#define MIN(a,b) (((a)<(b)) ? (a):(b))using namespace std;typedef long long LL;int const N=1e4+5;struct Node {int num,id;
} m[N];int n;
int a[N],b[N],f[N];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++) {m[i].num=MIN(a[i],b[i]);m[i].id=i;}for(int i=1; i<=n-1; i++) for(int j=i+1; j<=n; j++) if(m[i].num>m[j].num) {swap(m[i],m[j]);}int l=0,r=n+1;for(int i=1; i<=n; i++) {int num=m[i].num;int id=m[i].id;if(num==a[id]) f[++l]=id;else f[--r]=id;}int ta=0,tb=0;for(int i=1; i<=n; i++) {ta+=a[f[i]];if(tb<ta) tb=ta;tb+=b[f[i]];}printf("%d\n",tb);for(int i=1; i<=n; i++) printf("%d ",f[i]);printf("\n");return 0;
}
【C++】「一本通 1.1 例 4」加工生产调度相关推荐
- #10003. 「一本通 1.1 例 4」加工生产调度(贪心)
加工生产调度 题目描述 某工厂收到了n个产品的订单,这n个产品分别在A.B两个车间加工,并且必须先在A车间加工后才可以到B车间加工. 某个产品i在A.B两车间加工的时间分别为Ai.Bi.询问怎样安排这 ...
- LibreOJ10082. 「一本通 3.3 例 1」Word Rings【二分+SPFA】
10082. 「一本通 3.3 例 1」Word Rings [题目描述] 传送门 [题解] 将一个字符串看成一条边,字符两端的字符看成节点,长度看成权值.二分枚举答案,最后SPFA刷正环,因为只要有 ...
- 【C++】「一本通 1.1 例 2」种树
「一本通 1.1 例 2」种树 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [解析] [代码] [来源] 一本通题库-1423 LibreOJ-10001 vjud ...
- #10001. 「一本通 1.1 例 2」种树
#10001. 「一本通 1.1 例 2」种树 满足n个区间种树的要求,求最少种多少棵数 思路 按照区间的尾巴来排序,因为如果区间有重叠的种在第一个区间的尾巴可以使得种树更少,所有每次始从尾巴开始种树 ...
- 【C++】「一本通 1.1 例 5」智力大冲浪
「一本通 1.1 例 5」智力大冲浪 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [数据范围] [解析] [代码] [来源] 一本通题库-1426 LibreOJ- ...
- Loj 10115 「一本通 4.1 例 3」校门外的树 (树状数组)
题目链接:https://loj.ac/problem/10115 题目描述 原题来自:Vijos P1448 校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的 ...
- 「一本通 4.1 例 3」校门外的树 (loj10115)
题目描述 原题来自:Vijos P1448 校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两种操作: K=1,读入 l,r表示在 l 到 r 之间种上 ...
- loj10157. 「一本通 5.2 例 5」皇宫看守
思路: 例四是覆盖全部边,dp两个状态,例五是覆盖全部点,dp三个状态. #include<cstdio> #include<iostream> #include<cst ...
- #10019. 「一本通 1.3 例 2」生日蛋糕
冥想盆 感性理解深搜剪枝(看完这个再看下面的文章) 理解本题的思路 [代码实现1:最慢最好理解(自己打的):100多ms] [代码实现2:次慢:30多ms] [代码实现3:最快:10多ms] 最后放上 ...
最新文章
- AJAX培训第二讲:使用AJAX框架(上)
- 转载:一位资深程序员大牛给予Java初学者的学习路线建议
- 把技术卖给不懂技术的人
- Xcode生成的可执行文件在哪里
- Python并发编程—进程
- 【Leetcode | 47】 222. 完全二叉树的节点个数
- 前馈神经网络——深度学习之神经网络核心原理与算法
- 应用内评分_评分者信度
- 日本「AI 鱼脸识别」项目,每分钟识别 100 条,有望让渔民不再“摸鱼”
- 《我在谷歌大脑见习机器学习的一年:Node.js创始人的尝试笔记》阅读笔记
- Atitit. Js 冒泡事件阻止 事件捕获 事件传递 事件代理
- 大巧不工,袋鼠云正式开源大数据任务调度平台——Taier(太阿)
- matlab设计译码器,基于Matlab编译码器的仿真与设计
- The firefox installs flashplugin for Linux
- “燕云十六将”之张永生(13)
- 无线传感网络的基本结构
- cad快看_苹果用户福音——CAD快速看图mac版来啦
- 联发科6758_酷派发布新机!联发科P30+4900mAh售价899元,谁给你的勇气?
- 【react】全选复选框和单个复选框联动功能
- 使用IBM Data Movement Tool 具体迁移oracle至db2实验
热门文章
- 大数据思维导图锦集(原创吐血整理,不定期更新)
- pic57 c语言编程,PIC16C57C初始化头文件
- 研发里那只看不见的手,勒的很疼
- 抛物线的几何性质(传统几何法推导)
- DySAT: Deep Neural Representation Learning on Dynamic Graph via Self-Attention Networks
- Ubuntu 18.04 锁屏 快捷键 无效
- matlab 棋盘格畸变矫正
- Mac更新系统后无法使用git
- teamview+ccproxy实现远程局域网本地访问
- hive和presto下标准时间格式和时间戳的转化