思路:
因为是要获得最大收益首先要算出每种月饼单价,然后从选择最高单价开始售卖。因此我们要先根据库存量和总售价来计算出月饼的单价,之后再进行从高到低排序。
AC:
#include<iostream>
#include<algorithm>
using namespace std;
struct mooncake{
double store;//库存量
double sell;//总售价
double price;//单价
}cake[1100];
bool cmp(mooncake a,mooncake b) { return a.price>b.price; }
int main()
{
int n,d,i;
cin >> n >> d;
for(i=0;i<n;i++)
cin >> cake[i].store;
for(i=0;i<n;i++)
{
cin >> cake[i].sell;
cake[i].price=cake[i].sell/cake[i].store;
}
sort(cake,cake+n,cmp);
double ans;
for(int i=0;i<n;i++)
{
if(cake[i].store<=d)
{
d-=cake[i].store;
ans+=cake[i].sell;
}
else
{
ans+=d*cake[i].price;
break;
}
}
printf("%.2lf\n",ans);
return 0;
}