栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python-1017 Queueing at Bank

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python-1017 Queueing at Bank

额 我把时间全部化成秒。等待时间=早到时间+等前一个人完事时间
我是将所有早到时间先加起来,然后这些人全部归于8点开始。
用time按开始时间排列出所有有效的排队人。用pcs按所需时间排列出所有已经在窗口的人。
等前一个人完事时间=pcs中前一个人的结束时间-time中这个人的开始时间

n, k = list(map(int, input().split()))
time = []
sec = 0

for i in range(n):
    temp = input().split()
    x = temp[0]
    y = 3600 * int(x[0:2]) + 60 * int(x[3:5]) + int(x[6:8])
    if int(x[0:2]) < 8: sec += 28800 - y
    if int(x[0:2]) < 17: time += [[y, int(temp[1])]]#time[[开始时间,所需时间]]
n = len(time)
time = sorted(time, key=lambda x:x[0])
for i in range(n):
    if time[i][0] < 28800: time[i][0] = 28800
    
pcs = []
for i in time[:k]: pcs.append([i[0] + i[1] * 60, i[1] * 60])#pcs[[结束时间,所需时间]]
for i in range(k, n):
    pcs = sorted(pcs, key=lambda x:x[1])
    if time[i][0] <= pcs[0][0]:
        sec += pcs[0][0] - time[i][0]
        for j in range(1, k): pcs[j][1] -= pcs[0][1]#别忘了更新窗口人的所需时间
        pcs[0][1] = time[i][1] * 60
        pcs[0][0] += pcs[0][1]
    else:
        pcs = pcs[1:]
        pcs.append([time[i][0] + time[i][1] * 60, time[i][1] * 60])
        
print('%.1f' % (sec/n/60))
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/864435.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号