解题过程的小记录,如有错误欢迎指出。
难度:一星
题目分析
给出一堆月饼供应商的储存量和总价,要求找出指定总额的利益最大化方案。
注意点
- 第三行给出的价格是总额,不是每吨单价
- 月饼的库存量和总售价题中没有说是整数,所以要设为double
- 为了防止错误,因为后面有涉及到d的计算,可以把d也设为double(虽然我是没有碰到,可能是因为我没有写涉及d的除法的原因)
我的解题过程
思路
输入数据后算出每种月饼每吨多少钱,进行排序后,从大到小遍历求出利益最大化的总价格
bug
无~(本以为会超时咳咳)
代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct mooncake {
double amount, price, sigle;
};
int comp(mooncake m1, mooncake m2) {
return m1.sigle > m2.sigle;
}
int main()
{
int n, d;
double ans = 0;
cin >> n >> d;
vector<mooncake> m(n);
for (int i = 0; i < n; i++) {
cin >> m[i].amount;
}
for (int i = 0; i < n; i++) {
cin >> m[i].price;
m[i].sigle = m[i].price / m[i].amount;
}
sort(m.begin(), m.end(), comp);
for (int i = 0; i < m.size(); i++) {
if (d >= m[i].amount) {
ans += m[i].price;
d = d - m[i].amount;
}
else {
ans += d*m[i].sigle;
break;
}
}
printf("%.2lf", ans);
}