1020 月饼 (25 分)
思路
总体思路还是比较清晰的,按照均值排序。然后有限满足均值高的。
// 1020 月饼 (25 分).cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include<iostream>
#include<iomanip>
#include<algorithm>
using namespace std;
struct MoonCake {
double num, totalp, singlep;//3个double型的库存量,总价,单价
}cakes[1000];
bool cmp(MoonCake a, MoonCake b)
{
return a.singlep > b.singlep;//设计函数以降序
}
int main()
{
int n, maxreq;//定义种类,最大需求量
cin >> n >> maxreq;
for (int i = 0; i < n; i++)
cin >> cakes[i].num;
for (int i = 0; i < n; i++)
cin >> cakes[i].totalp;
for (int i = 0; i < n; i++)
cakes[i].singlep = cakes[i].totalp / cakes[i].num;
sort(cakes, cakes + n, cmp);
double maxbenf = 0;
for (int i = 0; i < n; i++)
{
if (maxreq <= cakes[i].num)//如果最大需求量不大于当前库存
{
maxbenf += cakes[i].singlep * maxreq;//最大收益即当前单价乘以最大需求量
break;//注意及时退出
}
else
{
maxbenf += cakes[i].totalp;//否则最大收益累加当前总价
maxreq -= cakes[i].num;//需求量减去当前库存
}
}
cout << setiosflags(ios::fixed) << setprecision(2) << maxbenf;
return 0;
}