1.题目描述
2.题目分析
首先每一个种类的月饼都有库存量 ,总售价,以及单价这三个属性,所以要用到结构体。注意一下题中虽然没说单价,但要获得最大收益一定是把单价最贵种类的月饼先卖掉,如果卖完,再买第二贵的月饼。
3.代码演示
#include<iostream>
#include<algorithm>
using namespace std;
typedef struct Y{
double a; //库存量
double e; //总售价
double p; //单价
};
bool cmp(Y x1,Y x2){
return x1.p > x2.p;
}
int main(){
int N,D;
cin >> N >> D;
Y d[N];
double sum=0;
for(int i=0;i<N;i++){
cin >> d[i].a;
}
for(int i=0;i<N;i++){
cin >> d[i].e;
d[i].p = d[i].e/d[i].a;
}
sort(d,d+N,cmp); //把每一个种类月饼单价从高到低排序。
int j=0;
while(D!=0){
if(D<=d[j].a){
sum=sum+D*d[j].p;
D=0;
}
else{
sum = sum +d[j].e;
D = D-d[j].a;
}
j++;
}
printf("%.2lf",sum);
}