派送费计费
提交数: 232, 通过率: 54.31%, 平均分: 59.55
题目描述:
某物流公司根据物流优先级分成一级到四级,派件费分别为 300、 200、 100、 80 元/件。每天有 n 件物品分批进仓,每件包含单号、 派送批次、 派件费。为实现物流派件优先规则,送货员在仓库中选择派件优先级最高的一件派送,接下来选择剩余部分和新进批次中派件优先级最高的一件派送,每派送一件,新的一批到达仓库。 根据要求编写程序计算送货员某天前 m 件物品的派件费总额。
输入格式:
第一行两个整数,m和n。m表示要求前 m 件物品的派件费总额,n表示有 n 件物品分批进仓。
接下来n行,每行三个变量,分别为单号、 派送批次、 派件费。
输出格式:
请输出一行 m 个整数,其中第 i 个整数表示前 i 件物品的派件费总额。
数据范围:
1<=m<=n<=1000
样例输入:
4 9 A 1 200 B 1 100 C 2 80 D 2 80 E 3 300 F 4 80 G 4 80 H 4 300 I 5 200
样例输出:
200 300 600 900
提示:
def sort(lst):
n = len(lst)
i = 0
while i < n-1:
for j in range(n - 2 , i - 1 , -1):
if lst[j][1] > __________: #填空1,将lst中的元素按派件批次升序排序
__________ #填空2
i = j + 1
return lst
def imitate(lst,m):
n = len(lst)
for i in range(n):
lst[i].append(-1)
val = 0
j = 0
q = {300:[-1,-1], 200:[-1,-1], 100:[-1,-1], 80:[-1,-1]}
for i in range(m):
while j<n and __________: #填空3
k = lst[j][2]
if q[k][0] == -1:
q[k][0] = j
else:
p = q[k][1]
__________ #填空4
__________ #填空5
j += 1
for v in [300,200,100,80]:
k = q[v][0]
if k != -1:
__________ #填空
q[v][0] = lst[k][3]
break
return val
'''
读取快递数据,存入列表 task 中。列表的每个元素包含 3 个数据项,分别快递单的单号、 派送批次、 派件费。读取派送件数, 存入 m
'''
m,n = map(int,input().split())
task = []
for i in range(n):
x,y,z = input().split()
task.append([x,int(y),int(z)])
task = sort(task)
for i in range(1,m+1):
val = imitate(task, i)
print(val, end = ' ')
时间限制: 1000ms空间限制: 256MB
来源: 【2023年3月温州二模信息技术第15题】