贪心:既然有存货量一定,利润要最高;
这个贪心就在于我看“单价”最高,这个单价也是要把存货量算进去的,所以按“单价”排序,再遍历,优选选择“单价”最高的,不够的再补,用小数补,够得就全部把存货量全卖了哈哈哈哈
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
struct mooncake{
double store,sell,price;
}cake[1010];
bool cmp(mooncake a,mooncake b){
return a.price>b.price;
}
int main()
{
int n;
double demand;
cin>>n>>demand;
for(int i=0;i<n;i++)
{
cin>>cake[i].store;
}
for(int i=0;i<n;i++)
{
cin>>cake[i].sell;
cake[i].price=cake[i].sell/cake[i].store;
}
sort(cake,cake+n,cmp);
double earnings=0;
//贪心
for(int i=0;i<n;i++)
{
if(cake[i].store<demand)
{
earnings+=cake[i].sell;
demand-=cake[i].store;
}
else{
earnings+=cake[i].price*demand;
break;
}
}
printf("%.2f",earnings);
return 0;
}