解题思路:题目给了每种月饼的吨数和总价,因此可以算出每吨月饼的价格,因为要获得最大的收益,所以考虑优先卖单价最高的月饼
#include<bits/stdc++.h>
using namespace std;
typedef struct Mooncake{
double count;吨数
double sum;总价
double price;单价
}Mooncake;
bool cmp(Mooncake a,Mooncake b){
return a.price>b.price;
}
int main(){
int n,m;
double pay=0;
cin>>n>>m;
Mooncake cake[n];
for(int i=0;i<n;i++)
cin>>cake[i].count;
for(int i=0;i<n;i++){
cin>>cake[i].sum;
cake[i].price=cake[i].sum/cake[i].count;
}
sort(cake,cake+n,cmp);//对蛋糕的单价进行从大到小排序
for(int i=0;i<n;i++){
if(cake[i].count<=m){
pay+=cake[i].sum;
m-=cake[i].count;
}else{
pay+=m*cake[i].price;
break;
}
}
printf("%.2lf",pay);
}
运行结果: