1020 月饼 (25分)

在这里插入图片描述
输入样例:

3 20
18 15 10
75 72 45
输出样例:

94.50

解题心得:

  1. 本题因为要排序,优先考虑使用二维数组和sorted最常用的模式;
  2. python在建立二维数组时有一个坑,就是[[]] * n中出现浅拷贝问题,操纵一个元素等于操作所有元素,正确建立二维数组的方式是
    for i in range(n):
        cakes.append([])
  1. 注意审题,哪些是正整数,哪些是正数,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)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值