zoukankan      html  css  js  c++  java
  • PAT Basic 1020 月饼 (25 分)

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

    注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 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


    #include <iostream>
    #include <algorithm>
    using namespace std;
    struct mooncake{
        double ap;
        double sp;
        double coun;
    };
    bool cmp(mooncake a,mooncake b){
        return a.sp>b.sp;
    }
    int main()
    {
        int N,need;double all=0;
        cin>>N>>need;
        mooncake mc[N];
        for(int i=0;i<N;i++){
            cin>>mc[i].coun;
        }
        for(int i=0;i<N;i++){
            cin>>mc[i].ap;
            mc[i].sp=mc[i].ap/mc[i].coun;
        }
        sort(mc,mc+N,cmp);
        for(int i=0;i<N;i++){
            if(need>=mc[i].coun){
                all+=mc[i].ap;
                need-=mc[i].coun;
            }else{
                all+=(mc[i].sp*need);
                break;
            }
        }
        printf("%.2f",all);
        system("pause");
        return 0;
    }
  • 相关阅读:
    11111 Generalized Matrioshkas
    Uva 442 Matrix Chain Multiplication
    Uva 10815 Andy's First Dictionary
    Uva 537 Artificial Intelligence?
    Uva 340 MasterMind Hints
    SCAU 9508 诸葛给我牌(水泥题)
    Uva 10420 List of Conquests(排序水题)
    Uva 409 Excuses, Excuses!
    10/26
    11/2
  • 原文地址:https://www.cnblogs.com/littlepage/p/11406822.html
Copyright © 2011-2022 走看看