流水线作业

题目描述:
一个工厂有m条流水线,来并行完成n个独立的作业,该工厂设置了一个调度系统,在安排作业时,总是优先执行处理时间最短的作业。
现给定流水线个数m,需要完成的作业数n, 每个作业的处理时间分别为t1,t2…tn。请你编程计算处理完所有作业的耗时为多少?
当n>m时,首先处理时间短的m个作业进入流水线,其他的等待,当某个作业完成时,依次从剩余作业中取处理时间最短的进入处理。
输入描述:
第一行为2个整数(采用空格分隔),分别表示流水线个数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的3个作业。
第一条流水线先完成作业,然后调度剩余时间最短的作业8。
第二条流水线完成作业,然后调度剩余时间最短的作业10。
总工耗时就是第二条流水线完成作业的时间13(3+10)。

思路:
分流水线数量大于作业数和小于等于;小于输出最大的作业数即可,大于可以新建一个数组存放结果

JScript代码

let arr = readline().split(" ").map(Number);
let m = arr[0]; //流水线数量
let n = arr[1]; //作业数量
let task = readline().split(" ").map(Number);
let dp = [];
task.sort((a, b) => a - b);
if (n <= m) {
  //当流水线数量大于作业数量时
  console.log(task[n - 1]);
}
for (let i = 0; i < n; i++) {
  if (i < m) {
    dp[i] = task[i];
  } else {
    //当作业书大于流水线时,处理时间最短应当是当前任务task[i]+dp[i-m]个流水线时的时间
    dp[i] = task[i] + dp[i - m];
  }
}
console.log(dp[n - 1]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值