题目意思
给你n种月饼,现在给出你每种月饼的库存量和每种月饼的总售价,现在市场最大需求量为m,问你最大的收益是多少。
解题思路
这就是一个贪心问题,要求最大的收益。并且每种月饼可以取一部分。
代码部分
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <cstring>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
const int maxn=1e5+10;
int n,m;
struct node
{
double weight,price;
double value;
} a[1100];
bool cmp(node a,node b)
{
return a.value>b.value;
}
int main()
{
scanf("%d%d",&n,&m);
double sum=0;
for(int i=0; i<n; i++)
{
scanf("%lf",&a[i].weight);
}
for(int i=0; i<n; i++)
{
scanf("%lf",&a[i].price);
}
for(int i=0; i<n; i++)
{
a[i].value=(1.0*a[i].price)/a[i].weight;
}
sort(a,a+n,cmp);
for(int i=0; i<n; i++)
{
if(a[i].weight<m)
{
sum+=a[i].price;
m-=a[i].weight;
}
else
{
sum+=a[i].value*m;
break;
}
}
printf("%.2lf\n",sum);
return 0;
}