流水线作业调度问题
来源:互联网 发布:淘宝利润计算 编辑:程序博客网 时间:2024/04/29 12:12
题目:
感觉有些 , 还要思考的地方 , 留下了 ,以后看。。。。
Description
N个作业{1,2,………,n}要在由两台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为ai和bi,1≤i≤n。
流水作业高度问题要求确定这n个作业的最优加工顺序,使得从第一个作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少。
流水作业高度问题要求确定这n个作业的最优加工顺序,使得从第一个作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少。
Input
输入包括若干测试用例,每个用例输入格式为:
第1行 一个整数代表任务数n,当为0时表示结束,或者输入到文件结束(EOF)
第2行至第n+1行每行2个整数,代表任务在M1,M2上所需要的时间
第1行 一个整数代表任务数n,当为0时表示结束,或者输入到文件结束(EOF)
第2行至第n+1行每行2个整数,代表任务在M1,M2上所需要的时间
Output
输出一个整数,代表执行n个任务的最短时间
Sample Input
OriginalTransformed11 20
Sample Output
OriginalTransformed3
#include<stdio.h>#include<stdlib.h>struct node{ int m1,m2;};struct node time[2][20000];int cmp1(const void *p1,const void *p2){ return ( (*(struct node *)p1).m1>(*(struct node *)p2).m1? 1:-1);}int cmp2(const void *p1,const void *p2){ return ( (*(struct node *)p1).m2>(*(struct node *)p2).m2? -1:1 );}int main(){ int n,i,a,b,q,p,time1,time2; while(scanf("%d",&n)!=EOF&&n) { q=p=0; time1=time2=0; for(i=1;i<=n;i++) { scanf("%d%d",&a,&b); if(b>=a) { time[0][q].m1=a; time[0][q++].m2=b; } else{ time[1][p].m1=a; time[1][p++].m2=b; } } qsort(time[0],q,sizeof(time[0][0]),cmp1);//m1 降序 qsort(time[1],p,sizeof(time[1][0]),cmp2);//m2 升序 for(i=0;i<q;i++) { time1+=time[0][i].m1; if(time2<time1) time2=time1; time2+=time[0][i].m2; } for(i=0;i<p;i++) { time1+=time[1][i].m1; if(time2<time1) time2=time1; time2+=time[1][i].m2; } printf("%d\n",time2); } return 0;}
- 流水线作业调度问题
- AOJ-AHU-OJ-145 流水线作业调度问题
- 流水线调度dp问题
- 动态规划---->流水线调度问题
- 动态规划算法中的流水线调度问题
- n流水线m装配站调度问题
- 经典问题:流水线调度(51nod)
- 流水线调度问题——动态规划
- 流水线调度
- 流水线调度
- 流水线调度
- 流水线作业
- 批处理作业调度问题
- 作业调度问题
- 批处理作业调度问题
- 批处理作业调度问题
- 批处理作业调度问题
- 批处理作业调度问题
- iOS下拉刷新上拉加载更多EGOTableViewPullRefresh类库
- 【忘记的登录密码如何才能被复原】
- Android学习笔记之实现一个文档查看器(一)——应用分析
- 求最终得分
- csdn设计人员们,你们的博客有bug啦
- 流水线作业调度问题
- cvs的配置和使用
- android mount
- ADO访问数据源——VB与数据库(二)
- android 网络图片双缓存
- Linux下进程通信
- Builder Pattern
- USTCOJ 1388 钻石
- 5名跳水高手参加10米高台跳水决赛,有人让5人根据实力预测比赛结果编程解出比赛结果的实际名次