51nod-1205 流水线调度
来源:互联网 发布:农家乐商机数据 编辑:程序博客网 时间:2024/04/30 12:14
原题链接
1205 流水线调度
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题
收藏
关注
N个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为a[i]和b[i]。你可以安排每个作业的执行顺序,使得从第一个作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少。求这个最少的时间。
Input
第1行:1个数N,表示作业的数量。(2 <= N <= 50000)第2 - N + 1行:每行两个数,中间用空格分隔,表示在M1和M2上加工所需的时间a[i], b[i]。(1 <= a[i], b[i] <= 10000)。
Output
输出完成所有作业所需的最少时间。
Input示例
43 72 11 14 2
Output示例
14
Johnson算法
(1) 把作业按工序加工时间分成两个子集,第一个集合中在S1上做的时间比在S2上少,其它的作业放到第二个集合。先完成第一个集合里面的作业,再完成第二个集合里的作业。
(2) 对于第一个集合,其中的作业顺序是按在S1上的时间的不减排列;对于第二个集合,其中的作业顺序是按在S2上的时间的不增排列。在这里,我一个数组搞定,把这两个集合分别向两边插入。
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define maxn 50005#define MOD 1000000007using namespace std;typedef long long ll;struct Node{friend bool operator < (const Node&a, const Node&b){return a.key < b.key; }int key, i, job;}node[maxn];int a[maxn], b[maxn], c[maxn]; int main(){//freopen("in.txt", "r", stdin);int n;scanf("%d", &n);for(int i = 0; i < n; i++){scanf("%d%d", a+i, b+i);}for(int i = 0; i < n; i++){node[i].key = a[i] < b[i] ? a[i] : b[i];node[i].i = i;node[i].job = a[i] < b[i];}sort(node, node+n);ll j = 0, k = n-1;for(int i = 0; i < n; i++){if(node[i].job) c[j++] = node[i].i;else c[k--] = node[i].i;} j = a[c[0]];k = j + b[c[0]];for(int i = 1; i < n; i++){j += a[c[i]];k = k >= j ? k + b[c[i]] : j + b[c[i]];}printf("%I64d\n", k);return 0;}
0 0
- 51nod-1205 流水线调度
- 51nod 1205 流水线调度
- 51nod 1205 流水线调度
- 51nod 1205 流水线调度
- 51Nod-1205-流水线调度
- 51nod 1205 流水线调度(Johnson规则)
- 贪心(流水线调度问题) 51nod 1205
- 经典问题:流水线调度(51nod)
- 51nod 1205 流水线调度 贪心(写排序函数)Johnson算法
- 流水线调度
- 流水线调度
- 流水线调度
- 流水线作业调度问题
- 流水线调度dp问题
- 动态规划---->流水线调度问题
- 动态规划之johnson流水线调度
- 动态规划算法中的流水线调度问题
- n流水线m装配站调度问题
- C盘瘦身
- 将mongod 作为系统服务启动
- 求一个3*3矩阵对角线元素之和
- UML——构件图、部署图(实现图)
- npm intall node-sass出现错误
- 51nod-1205 流水线调度
- 串口通信Usart发送程序
- Construct 2 制作游戏心得
- 由于 box.style.left只能获取行内样式的值,不能获取到css中JS中样式left等值;用JS获取外部CSS样式--currentStyle和getComputedStyle的兼容写法
- Orm之XML解析
- Android中Activity和Fragment之间的通信
- Java文件读写操作
- 剑指Offer 9题 斐波那契数列(Fibonacci) Java版
- 去除CSDN 博客页广告的历程