题目描述
生日蛋糕最早起源于西方,后来才慢慢的传入中国。最早的蛋糕是用几样简单的材料做出来的,这些蛋糕是古老宗教神话与奇迹式迷信的象征。
你是一家糕点公司的老板,现在你需要对 3 种蛋糕的销售出谋划策,其分别仓库中的存储量为 17、14、11 吨,总售价分别为 74、71、44 万元。如果现在市场上能够消费的货物量只有 19 吨,那么我们能够获得的最高利润的方法则是卖出仓库中的所有第 2 种蛋糕 14 吨、和第 1 种蛋糕 5 吨,获得 71 + 74 * 5 / 17 = 92.76(万元)
输入描述:
在输入数据中:
首行给出蛋糕的类型数 T 和市场上能够消费的货物数 M ,下一行给出 T 个自然数作为每种蛋糕的存储量(以吨为单位),再下一行给出 T 个自然数作为每种蛋糕的总售价(以万元为单位)
输出描述:
在一行中输出最高利润,结果保留到小数点后 2 位(以万元为单位)
示例1
输入
3 19 17 14 11 74 71 44
输出
92.76
备注:
0≤T≤999
0≤M≤500
注意使用结构体加排序可以按照每样单价输出一个数组,在根据仓库中已有的数量进行一个循环的判断,加减,注意部分细节不能按照除的,要直接加上原价,否则可能会像我一样最开始wa了一发
#include<bits/stdc++.h>
using namespace std;
struct sex
{
double a,b;
double c;
}dangao[10100];
bool cmp(sex x1,sex y1)
{
return x1.c>y1.c;
}
int main()
{
int T,M;
cin >> T >> M ;
for(int i=1;i<=T;i++)
cin >> dangao[i].a ;
for(int i=1;i<=T;i++)
cin >> dangao[i].b ;
for(int i=1;i<=T;i++)
dangao[i].c=dangao[i].b/dangao[i].a;
sort(dangao+1,dangao+T+1,cmp);
// for(int i=1;i<=T;i++)
// cout<<dangao[i].c <<" "<<dangao[i].a<<endl;
double sum=0;
for(int i=1;i<=T;i++)
{
if(M<dangao[i].a)
{
sum+=M*dangao[i].c;
printf("%.2lf",sum);
break;
}
if(M>=dangao[i].a)
{
sum+=dangao[i].b;
M-=dangao[i].a;
}
}
return 0;
}