zoukankan      html  css  js  c++  java
  • PAT 月饼

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

    注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 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
    a, b = map(int, input().split())
    c = list(map(int, input().split()))
    d = list(map(int, input().split()))
    t = 0
    e, f = [], []
    for i in range(len(c)):
        e.append(d[i] / (c[i]+0.0000001))
        e.append(c[i])
        e.append(d[i])
        g = e[:]
        f.append(g)
        e.clear()
    if f:
        f.sort(key = lambda f: (f[0]), reverse = True)
    k = 0.00
    t=0
    m=0
    while True:
        if f[m][1]<b:
            b-=f[m][1]
            k+=f[m][2]
        else:
            k+=f[m][0]*b
            break
        m+=1
    print('%.2f' % k)

    这道题有一个很大的坑就是当库存量为 0 时,所对应的货物优先选择出售,然后再根据单价从高到低排序,单价高的优先出售

  • 相关阅读:
    UVa 1354 天平难题 (枚举二叉树)
    广西邀请赛总结
    UVa 12118 检查员的难题 (dfs判连通, 构造欧拉通路)
    UVA
    Uva 127 "Accordian" Patience (模拟)
    UVA 10539 Almost Prime Numbers( 素数因子)
    HDU 1272 小希的迷宫(并查集)
    HDU 1213 How Many Tables (并查集)
    POJ 2236 Wireless Network(并查集)
    HDU 1233 还是畅通工程 ( Kruskal或Prim)
  • 原文地址:https://www.cnblogs.com/andrew3/p/12640123.html
Copyright © 2011-2022 走看看