• 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))
    
  • 相关阅读:
    POJ 1328 Radar Installation
    POJ 1700 Crossing River
    POJ 1700 Crossing River
    poj 3253 Fence Repair (贪心,优先队列)
    poj 3253 Fence Repair (贪心,优先队列)
    poj 3069 Saruman's Army(贪心)
    poj 3069 Saruman's Army(贪心)
    Redis 笔记与总结2 String 类型和 Hash 类型
    数据分析方法有哪些_数据分析方法
    数据分析方法有哪些_数据分析方法
  • 原文地址:https://www.cnblogs.com/kevinbruce656/p/12234441.html
Copyright © 2020-2023  润新知