python题目58:工厂流水线调度

一个工厂有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 

m , n = map(int , input().split())
jobs = list(map(int , input().split()))

if n <= m:
    print(max(jobs))
else:
    jobs.sort()
    sum_time = 0
    current_jobs = jobs[0:m]
    completed = 0
    while completed < n - m:
        min_value = current_jobs[0]
        sum_time += min_value
        current_jobs = [x - min_value for x in current_jobs]
        del current_jobs[0]
        current_jobs.append(jobs[m + completed])
        completed += 1
    sum_time += current_jobs[-1]

    print(sum_time)

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值