zoukankan      html  css  js  c++  java
  • L2-003 月饼 python实现

    题目描述

    月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。

    注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10 万吨,总售价分别为 75、72、45 亿元。如果市场的最大需求量只有 20 万吨,那么我们最大收益策略应该是卖出全部 15 万吨第 2 种月饼、以及 5 万吨第 3 种月饼,获得 72 + 45/2 = 94.5(亿元)。

    输入格式:

    每个输入包含一个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N 表示月饼的种类数、以及不超过 500(以万吨为单位)的正整数 D 表示市场最大需求量。随后一行给出 N 个正数表示每种月饼的库存量(以万吨为单位);最后一行给出 N 个正数表示每种月饼的总售价(以亿元为单位)。数字间以空格分隔。

    输出格式:

    对每组测试用例,在一行中输出最大收益,以亿元为单位并精确到小数点后 2 位。

    输入样例:

    3 20
    18 15 10
    75 72 45

    输出样例:

    94.50

    一些坑点

    这个题挺简单的,思路没啥可说的,就是比较每吨的价格并排序,每次优先卖每吨价格最高的。

    不过这个题有点坑,题目中只说价格和库存是正数,没说是整数。我在读取数据的一开始用的int(i),然后有一个点过不去,非零返回。后来仔细想了想,应该是有个库存是零点多,用int就变成零了,进行除法的时候就会出错。最后改成了eval(i),我觉得float也可以,这都不是关键。

    代码

    class MoonCake():
        def __init__(self,kucun=1,price=1):
            self.kucun = kucun
            self.price = price
            self.bili = self.price/self.kucun
    n,m = input().split()
    m = int(m)
    n = int(n)
    moon = []
    kucun = [eval(i) for i in input().split()]
    price = [eval(i) for i in input().split()]
    for i in range(n):
        moon.append(MoonCake(kucun[i],price[i]))
    moon.sort(key=lambda x:x.bili,reverse=True)
    rlt = 0
    for i in range(n):
        if moon[i].kucun<m:
            rlt+=moon[i].price
            m-=moon[i].kucun
        else:
            rlt+=m/moon[i].kucun*moon[i].price
            break
    print("{:.2f}".format(rlt))
    
  • 相关阅读:
    状态压缩DP------学习小记
    hdu 4681 string
    poj 3254 Corn Fields
    poj 3680 Intervals
    poj 1149 pigs ---- 最大流
    最大流算法----(SAP 和 EK)
    poj 2151 Check the difficulty of problems
    FTP的PORT(主动模式)和PASV(被动模式)
    json.stringify(),json.stringify()与json.parse()的区别
    css 选择器
  • 原文地址:https://www.cnblogs.com/kevinbruce656/p/12234441.html
Copyright © 2011-2022 走看看