输入样例:
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 sysif __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 = 0while 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]breakidx += 1print('%.2f' % profit)