最大化控制资源成本

题目:

公司创新实验室正在研究如何最小化资源成本,最大化资源利用率,请你设计算法帮他们解决一个任务混部问题:有taskNum项任务,每个任务有开始时间(startTime),结束时间(endTime),并行度(parallelism)三个属性,并行度是指这个任务运行时将会占用的服务器数量,一个服务器在每个时刻可以被任意任务使用但最多被一个任务占用。

输入描述:

第一行输入为taskNum,表示有taskNum项任务,接下来taskNum行,每行三个整数,表示每个任务的开始时间(startTime),结束时间(endTime),并行度(parallelism)

输出描述:

一个整数,表示最少需要得服务器数量

实例:

3

2  3  1

6  9  2

0  5  1

输出:

2

# coding:utf-8
#JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
import functools
import collections
import queue
 
def comp(a, b):
    return a - b
 
def comp1(a, b):
    return a[0] - b[0]
 
result_machine = 0
 
#处理输入
task_num = input()
 
i = int(task_num)
ranges = []
while(i>0):
    input_str = input()
    input_list = [int(x) for x in input_str.split(" ")]
    ranges.append(input_list)
    i=i-1
 
#区间排序
ranges = sorted(ranges, key=functools.cmp_to_key(comp1))
 
pq = queue.PriorityQueue()
res = 0
temp_res = 0
 
for i in range(len(ranges)):
    while pq.qsize() > 0:
        top = pq.queue[0]
 
        if top[0] < ranges[i][0]:
            poll = pq.get()
            temp_res -= poll[1]
        else:
            break
 
    pq.put((ranges[i][1], ranges[i][2]))
    temp_res += ranges[i][2]
 
    if temp_res > res:
        res = temp_res
 
print(res)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值