2021年蓝桥杯省赛H题负载均衡

文章讲述了在解决一个模拟问题时,初始代码因时间复杂度过高(TLE)而未能通过,通过优化两行代码,成功改进了任务分配算法,使得程序得以正确运行并按要求完成任务分配。
摘要由CSDN通过智能技术生成

就是一个大模拟。。。

不过出了一个小插曲,刚开是TLE了,但没想到仅仅改了下面的两行代码就AC了

n,m=map(int,input().split())#计算机个数,任务数
v=[int(i) for i in input().split()]#每个计算机的算力
a=[]
for i in range(m):
    aa=list(map(int,input().split()))+[i]
    a.append(aa)
#print(a)
#h=[]
a.sort(key = lambda x: (x[1],x[0]))

h=[ 0 for i in range(m+1)]

i=0
while(  i < m ):
    capity=v[a[i][1]-1]
    start=0
    flag=a[i][1]
    temp=[]
    #print(a[i][1])
    while(i<m and a[i][1] == flag):
        ai,bi,ci,di,ei=a[i]
        tt=[]
        start =ai
        for j in temp:
            if j[0]<=start :
                capity += j[1]
            else:
                tt.append(j)
        temp=tt
        if di <= capity :
            temp.append([ai+ci,di])
            capity -= di
            h[ei]=capity
        else:
            h[ei]=-1
        i+=1

for j in h[:-1]:
    print(j)
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值