最大化控制资源成本
题目:
公司创新实验室正在研究如何最小化资源成本,最大化资源利用率,请你设计算法帮他们解决一个任务混部问题:有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 queuedef comp(a, b):return a - bdef 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 = 0for 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:breakpq.put((ranges[i][1], ranges[i][2]))temp_res += ranges[i][2]if temp_res > res:res = temp_resprint(res)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
