一个工厂有m条流水线
来并行完成n个独立的作业
该工厂设置了一个调度系统
在安排作业时,总是优先执行处理时间最短的作业
现给定流水线个数m
需要完成的作业数n
每个作业的处理时间分别为 t1,t2...tn
请你编程计算处理完所有作业的耗时为多少
当n>m时 首先处理时间短的m个作业进入流水线
其他的等待
当某个作业完成时,
依次从剩余作业中取处理时间最短的
进入处理

输入描述:
第一行为两个整数(采取空格分隔)
分别表示流水线个数m和作业数n
第二行输入n个整数(采取空格分隔)
表示每个作业的处理时长 t1,t2...tn
0<m,n<100
0<t1,t2...tn<100

输出描述
输出处理完所有作业的总时长

案例
输入
3 5
8 4 3 2 10
输出
13
说明
先安排时间为2,3,4的三个作业
第一条流水线先完成作业
调度剩余时间最短的作业8
第二条流水线完成作业
调度剩余时间最短的作业10
总共耗时 就是二条流水线完成作业时间13(3+10)

3 9
1 1 1 2 3 4 6 7 8

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int Cmp(const void *a, const void *b)
{return (*(int *)a - *(int *)b);
}void PrintList(int *list, int len)
{int i;for (i = 0; i < len; i++) {printf("%d ", list[i]);}printf("\n");
}int GetMax(int *list, int len)
{int i, max;max = list[0];for (i = 0; i < len; i++) {if (max < list[i]) {max = list[i];}}return max;
}int CountTime(int *list, int n, int m)
{int i;int currMin = 0;int *task = malloc(sizeof(int) * m);memset(task, 0, sizeof(int) * m);int *currentTask = malloc(sizeof(int) * m);memset(currentTask, 0, sizeof(int) * m);/* 排序 */qsort(list, n, sizeof(int), Cmp);PrintList(list, n);/* 分第一次任务 */for (i = 0; i < m; i++) {task[i] = list[i];currentTask[i] = list[i];}currMin = task[0];int taskIdx = m;while (1) {for (i = 0; i < m; i++) {//task[i] += list[i];currentTask[i]--;if (currentTask[i] == 0) {printf("insert task[%d]\n", list[taskIdx]);currentTask[i] = list[taskIdx];task[i] += list[taskIdx];taskIdx++;}if (taskIdx >= n) {// 循环结束return GetMax(task, m);}}}
}int main()
{int n, m, i;int *list = NULL;scanf("%d %d", &m, &n);printf("%d %d\n", m, n);list = malloc(sizeof(int) * n);if (list == NULL) {return -1;}memset(list, 0, sizeof(int) * n);for (i = 0; i < n; i++) {scanf("%d", &list[i]);}printf("max time[%d]\n", CountTime(list, n, m));return 0;
}

题目58 工厂流水线调度(ok)相关推荐

  1. 华为OD机试题:工厂流水线调度

    题目描述: 一个工厂有m条流水线,来并行完成n个独立的作业,该工厂设置了一个调度系统,在安排作业时,总是优先执行处理时间最短的作业. 现给定流水线个数m,需要完成的作业数n, 每个作业的处理时间分别为 ...

  2. 【华为机试真题Python】工厂流水线调度

    题目描述 一个工厂有m条流水线,来并行完成n个独立的作业,该工厂设置了一个调度系统,在安排作业时,总是优先执行处理时间最短的作业. 现给定流水线个数m,需要完成的作业数n, 每个作业的处理时间分别为t ...

  3. HUAWEI 机试题:工厂流水线调度

  4. 牛客每日练习----工厂流水线,大家一起来数二叉树吧,Just A String

    大提琴的声音就像一条河,左岸是我无法忘却的回忆,右岸是我值得紧握的璀璨年华,中间流淌的,是我年年岁岁淡淡的感伤. 链接:https://ac.nowcoder.com/acm/problem/1358 ...

  5. 经典问题:流水线调度(51nod)

    1205 流水线调度 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 N个作业{1,2,-,n}要在由2台机器M1和M2组成的流水线上完成加工.每个 ...

  6. 冲突向量求流水线调度策咯

    一.实验内容 1.根据流水线的时间周期和功能段数,输入流水线的预约表: 2.求出延迟禁止表和冲突向量: 3.构造流水线状态转移图: 4.寻找最小等间隔调度: 5.寻找最佳调度,并给出最小平均延迟和流水 ...

  7. 图扑孪生工厂流水线组态图可视化

    前言 2018 年,世界经济论坛(WEF)携手麦肯锡公司共同倡议并正式启动了全球"灯塔工厂网络项目"(Lighthouse Network),共同遴选率先应用工业革命 4.0 技术 ...

  8. java 流水线_用工厂流水线的方式来理解 RxJava 的概念

    为什么另写一篇 RxJava 的文章? 已经有很多RxJava的文章通过例子阐述了什么是 RxJava 以及怎么去用,但它们大多数只有代码.虽然也会通过类比来解释,例如最出名的就是"流&qu ...

  9. 计算机系统结构——非线性流水线调度

    非线性流水线调度 回顾:线性流水线的调度 非线性流水线因为段间设置有反馈回路,一个任务在流水的全过程中,可能会多次通过同一段或越过某些段.这样,如果每拍向流水线送入一个新的任务,将会发生多个任务争用同 ...

最新文章

  1. ubuntu 下安装 cudnn
  2. Moose File System分布文件系统测试
  3. makefile 基础(转)
  4. 求职干货:再也不怕面试官问斐波那契数列了!
  5. cube云原生机器学习平台-架构(四)
  6. linux常见的三种shell,几种常见的Shell
  7. cacti mysql版本,cacti迁移+升级版本
  8. yolo v3 pytorch版本(转载)
  9. 基于朴素贝叶斯的鸢尾花数据集分类
  10. 如何用pdfFactory新建打印机并设置属性
  11. 记录手机app的使用时长
  12. java 3D学习笔记
  13. 【ArcGIS教程一】如何用ArcGIS做一张专题地图
  14. 视线估计(Gaze Estimation)简介概述
  15. matlab双纵坐标的绘图命令_MATLAB画双纵坐标
  16. matlab实现图割算法中的最大流最小割Max-flow/min-cut问题(一)
  17. 如何有效实现软件的需求管理 - 3
  18. 3DMax的中文版官方手册
  19. 便宜的数据库_您会为了便宜的娱乐而放弃多少数据
  20. 神经网络-多层前馈神经网络

热门文章

  1. 如何修改Win10的Windows Terminal的背景(带图文)
  2. 【每天学习一点新知识】菜刀、冰蝎、蚁剑、哥斯拉webshell工具分析
  3. 天猫店群起店新玩法,安全稳定,天猫店群全店动销退款单后的玩法
  4. fontawesome图标字体使用
  5. 工银亚洲见证开户详细过程和攻略
  6. AP作为WLAN用户接入认证点的PEAP用户接入流程
  7. 雅睿生物在创业板IPO终止:安信证券为保荐人,曾计划募资7.5亿元
  8. PyCharm 里面的 c、m、F、f、v、p 分别代表什么含义?
  9. java里的椭圆拟合_[求助]椭圆的跟踪拟合
  10. 微信域名防封系统,APP下载链接域名怎么避免在微信中被封