必威官网PAT 1020. 月饼。1020. 月饼 (25)

PAT 1020. 月饼 (25)

月饼是神州人在中秋佳节时吃的同一种民俗食物,不同地段产生众多例外风味的月饼。现于得有项目月饼的库存量、总售价、以及市场之无比可怜需求量,请您算好博的最为深收入是聊。

在意:销售时许取出一些库存。样例给起之情是如此的:假如我们来3种月饼,其库存量分别吗18、15、10万吨,总售价分别吗75、72、45亿首批。如果市场的无限深需求量只出20万吨,那么我们最特别收益策略应该是卖出所有15万吨第2种植月饼、以及5万吨第3栽月饼,获得
72 + 45/2 = 94.5(亿初)。

1020. 月饼 (25)

月饼是中华人口以中秋佳节时吃的平种植传统食品,不同地区产生成百上千见仁见智风味的月饼。现于一定有项目月饼的库存量、总售价、以及市场的极致可怜需求量,请您算好赢得的顶深收益是多少。

留意:销售时许取出一些库存。样例给起之景是这么的:假如我们来3种植月饼,其库存量分别吗18、15、10万吨,总售价分别吗75、72、45亿状元。如果市场之极致深需求量只出20万吨,那么我们最特别收入策略应该是卖出所有15万吨第2种植月饼、以及5万吨第3种月饼,获得
72 + 45/2 = 94.5(亿头)。

输入格式:

每个输入包含1只测试用例。每个测试用例先叫有一个免越1000底正整数N表示月饼的色数、以及非超越500(以万吨为单位)的正整数D表示市场最为老需求量。随后同尽给出N个正数表示每种月饼的库存量(以万吨为单位);最后一执行于出N个正数表示每种月饼的毕竟售价(以亿初吗单位)。数字中以空格分隔。

输出格式:

对每组测试用例,在一行中输出最深收入,以亿最先呢单位并规范到稍微数点后2各。

输入样例:

3 20
18 15 10
75 72 45

输出样例:

94.50

#include <iostream>
#include <iomanip>
#include <math.h>
#include <stdio.h>
#include <string>
#include <cstring>
#include <cstdio>
#include<algorithm>
#include<vector>

using namespace std;
struct mooncake
{
    float kucun;
    float zongshoujia;
    float danjia;
}cake[9999];

bool cmp(mooncake a, mooncake b)
{
    return a.danjia > b.danjia;
}

int main()
{
    int n;
    int need;
    cin >> n >> need;
    float income=0;
    for (int i = 0; i < n; i++)
    {
        cin >> cake[i].kucun;
    }
    for (int i = 0; i < n; i++)
    {
        cin >> cake[i].zongshoujia;
        cake[i].danjia = cake[i].zongshoujia / cake[i].kucun;
    }
    sort(cake, cake + n, cmp);
    int j = 0;
    while (need > 0&&j<n)
    {
        if (need > cake[j].kucun)
        {
            need -= cake[j].kucun;
            income += cake[j].zongshoujia;
        }
        else
        {
            income += cake[j].danjia*need;
            need = 0;
        }
        j++;
    }




    printf("%.2lf\n", income);
    system("pause");
    return 0;
}

 

输入格式:

每个输入包含1单测试用例。每个测试用例先为来一个休超1000的正整数N表示月饼的路数、以及不超过500(以万吨为单位)的正整数D表示市场最好充分需求量。随后同实行被出N个正数表示每种月饼的库存量(以万吨为单位);最后一实施给出N个正数表示每种月饼的究竟售价(以亿首位呢单位)。数字里坐空格分隔。

出口格式:

本着每组测试用例,在一行中输出最特别收入,以亿首呢单位并精确到多少数点后2位。

输入样例:

3 20
18 15 10
75 72 45

输出样例:

94.50

立马道题很粗略,就是将各个项目的月饼按每万吨利润排个次,然后去处理便推行了。其中自以错开回顾一下类的用法也,特地不用struct而去动class,果然多基础之class的知识###还忘记光了。唉o︶︿︶o唉,绝望了,感觉不会见再度爱了,c++primer永远是自己之心上人了┑( ̄▽  ̄)┍ 。

理所当然这道题来只地方 卡了自家转,就是分母不能够为零星。〒_〒

#include<iostream>
#include<vector>
#include<algorithm>
#include<iomanip>
using namespace std;
struct mooncake{
        double storage;
        double profit;
        double profit_per;                                                      
};
bool comp(const mooncake& m1,const mooncake& m2){return m1.profit_per<m2.profit_per;}                
int main(){
    double kinds,max_demand;
    double Profit=0;
    cin>>kinds>>max_demand;
    vector<mooncake> mooncakes;
    mooncakes.resize(kinds);
    for(int i=0;i<kinds;i++){cin>>mooncakes[i].storage;}
    for(int i=0;i<kinds;i++)
    {
    cin>>mooncakes[i].profit; 
    if(mooncakes[i].storage==0) //此处有坑,慎跳→_→
    mooncakes[i].profit_per=0;
    else
    mooncakes[i].profit_per=mooncakes[i].profit/mooncakes[i].storage;
    }
    sort(mooncakes.begin(),mooncakes.end(),comp);
    auto e=mooncakes.end()-1;
    while(e>=mooncakes.begin()){
        if(e->storage>=max_demand){Profit+=max_demand*e->profit_per; break;}
        else {Profit+=e->storage*e->profit_per; max_demand-=e->storage; e--;}
    }
    cout<<fixed<<setprecision(2)<<Profit<<endl;
    return 0;   
} 

相关文章