1020 月饼 (25分)
程序员文章站
2022-06-07 15:14:43
...
输入样例:
3 20
18 15 10
75 72 45
输出样例:
94.50
解题心得:
- 本题因为要排序,优先考虑使用二维数组和sorted最常用的模式;
- python在建立二维数组时有一个坑,就是[[]] * n中出现浅拷贝问题,操纵一个元素等于操作所有元素,正确建立二维数组的方式是
for i in range(n):
cakes.append([])
- 注意审题,哪些是正整数,哪些是正数,pta平台返回三大类错误:1⃣️答案错误,那就是语法没问题是逻辑的问题;2⃣️没有得到返回,语法错误,这时候就要考虑越界、转换问题;3⃣️超时问题,主要优化for循环;
# -*- coding: utf-8 -*-
import sys
if __name__ == '__main__':
input_str = sys.stdin.readline().split()
n, d = int(input_str[0]), int(input_str[1])
store_str = sys.stdin.readline().split()
sale_str = sys.stdin.readline().split()
store_int = list(map(float, store_str))
sale_int = list(map(float, sale_str))
cakes = []
for i in range(n):
cakes.append([])
for i in range(n):
price = sale_int[i] / store_int[i]
cakes[i] += [price, store_int[i], sale_int[i]]
sorted_price = sorted(cakes, key=lambda x: x[0], reverse=True)
profit = 0.0
idx = 0
while d > 0 and idx < n:
if d > sorted_price[idx][1]:
profit += sorted_price[idx][2]
d -= sorted_price[idx][1]
else:
profit += d * sorted_price[idx][0]
break
idx += 1
print('%.2f' % profit)
上一篇: 基于拓扑排序的排课程序
下一篇: 图论-有向图中的强连通片