经典问题:流水线调度(51nod)
第1行:1个数N,表示作业的数量。(2 <= N <= 50000) 第2 - N + 1行:每行两个数,中间用空格分隔,表示在M1和M2上加工所需的时间a[i], b[i]。(1 <= a[i], b[i] <= 10000)。
输出完成所有作业所需的最少时间。
4 3 7 2 1 1 1 4 2
14
Johnson算法:
①:将任务分为两类,A类任务先加工时间短,B类任务再加工时间短(or一样长)
②:两类任务分别排序,其中A类按先加工时间从短到长排序,B类按再加工时间从长到短排序
③:合并两类,将第二类任务接到第一类任务后面,此时任务的顺序最佳
④:遍历所有任务,计算总耗时
#include<stdio.h>
#include<algorithm>
using namespace std;
typedef struct
{int a;int b;
}Task;
Task A[50005], B[50005];
bool cmpA(Task a, Task b)
{if(a.a<b.a)return 1;return 0;
}
bool cmpB(Task a, Task b)
{if(a.b>b.b)return 1;return 0;
}int main(void)
{int i, n, a, b, ans, sum, posA, posB, sumA, sumB;posA = posB = sumA = sumB = 0;scanf("%d", &n);for(i=1;i<=n;i++){scanf("%d%d", &a, &b);if(a<b){A[++posA].a = a;A[posA].b = b;sumA += b;}else{B[++posB].a = a;B[posB].b = b;sumB += a;}}sort(A+1, A+posA+1, cmpA);sort(B+1, B+posB+1, cmpB);for(i=1;i<=posB;i++)A[++posA] = B[i];ans = A[1].a+A[1].b;sum = A[1].a;for(i=2;i<=posA;i++){sum += A[i].a;ans = max(sum, ans)+A[i].b;}printf("%d\n", ans);return 0;
}
经典问题:流水线调度(51nod)相关推荐
- 冲突向量求流水线调度策咯
一.实验内容 1.根据流水线的时间周期和功能段数,输入流水线的预约表: 2.求出延迟禁止表和冲突向量: 3.构造流水线状态转移图: 4.寻找最小等间隔调度: 5.寻找最佳调度,并给出最小平均延迟和流水 ...
- 计算机系统结构——非线性流水线调度
非线性流水线调度 回顾:线性流水线的调度 非线性流水线因为段间设置有反馈回路,一个任务在流水的全过程中,可能会多次通过同一段或越过某些段.这样,如果每拍向流水线送入一个新的任务,将会发生多个任务争用同 ...
- 51nod 1205 流水线调度(Johnson规则)
对于加工顺序相同的两个或两个以上作业在两台机器上的加工排序,称之为:n个作业两台机床的作业排序问题,经典的启发式排序方法为Johnson规则. 其目的是最小化Makespan. 讨论版里有大佬详细推导 ...
- 处理机流水线------经典五段流水线
文章是在我遇到这部分问题时查找的所有感觉挺好的内容的整合(全部是转载的) 流水线基础理论就不加了,最新的处理器流水线处理的机制也没有(一般以用不到),想了解去随便找个芯片厂商官网下个手册自己查. 这部 ...
- 华为OD机试题:工厂流水线调度
题目描述: 一个工厂有m条流水线,来并行完成n个独立的作业,该工厂设置了一个调度系统,在安排作业时,总是优先执行处理时间最短的作业. 现给定流水线个数m,需要完成的作业数n, 每个作业的处理时间分别为 ...
- 【华为机试真题Python】工厂流水线调度
题目描述 一个工厂有m条流水线,来并行完成n个独立的作业,该工厂设置了一个调度系统,在安排作业时,总是优先执行处理时间最短的作业. 现给定流水线个数m,需要完成的作业数n, 每个作业的处理时间分别为t ...
- 题目58 工厂流水线调度(ok)
一个工厂有m条流水线 来并行完成n个独立的作业 该工厂设置了一个调度系统 在安排作业时,总是优先执行处理时间最短的作业 现给定流水线个数m 需要完成的作业数n 每个作业的处理时间分别为 t1,t2.. ...
- 流水线调度(51Nod-1205)
题目 N个作业{1,2,-,n}要在由2台机器M1和M2组成的流水线上完成加工.每个作业加工的顺序都是先在M1上加工,然后在M2上加工.M1和M2加工作业i所需的时间分别为a[i]和b[i].你可以安 ...
- UVA690 Pipeline Scheduling 流水线调度
题意:给出5个工作单元,有10个完全相同的程序需要执行,工作单元要避免冲突,问所有程序执行完所需的时间最短是多少? 例: 7 X...XX. .X..... ..X.... ...X... ..... ...
最新文章
- 市政管网检测机器人收费标准_管道无损CCTV检测:复杂的地下管网工作,其实可以交给机器人来做...
- SUBMIT 的使用方法
- 第二百五十三节,Bootstrap项目实战-资讯
- 邹欣对话图灵奖得主Jeffrey Ullman:数据库不会进入周期性的坏循环|《新程序员》...
- 职业规划计算机专业1500字,【计算机职业生涯规划书2000字】_计算机专业职业生涯规划书2000字...
- 伺服驱动器cn1引脚定义_关于三菱驱动器CN1端口的接线-专业自动化论坛-中国工控网论坛...
- zedgraph显示最小刻度_关于ZedGraph几个难点
- tab切换之图片切换
- 计算机青蓝云题库,计算机三级上机题库 计算机三级网络技术上机题库《南开100题》.doc...
- Javafx Scene Builder使用教程
- 给Android手机设置的壁纸应该是多大尺寸
- 硬货专栏 |WebRTC SDP 详解和剖析
- 安全卸载Mac应用程序的方法,最后一种不会产生卸载残留
- java读取execle
- 进阶篇:3.9)3d打印件设计
- 三屯河水库库容查询及进库流量计算程序
- java中写定时任务
- “网约护士”进行时:有疑惑和担忧,在观察中前进
- ajax显示不了,AJAX请求不显示信息
- Android Toast连续快速切换更新内容无延迟
热门文章
- python编程入门经典百度云-python电子书学习资料打包分享百度云资源下载
- python和java哪个好学-Java VS Python 应该先学哪个?
- 简析三星新专利,语音识别技术的新方法
- 第M题 快速幂详解!: 给出3个正整数A B C,求A^B Mod C。
- React入门基础+练习 (一)
- RocketMQ 实战-SpringBoot整合RocketMQ
- WebRTC-Android硬编码流程详解
- 矩阵连乘 动态规划_利用动态规划解LeetCode第62题:不同路径
- linux怎么将终端一分为二,Linux下的终端和作业控制
- PowerDesigner name与code同步问题