題目來源:團體程序設計天梯賽-練習集
題目地址:L2-003 月餅
題目大意
題目給定月餅種類的數量和市場最大需求量,以及各個種類月餅的庫存量、總售價、,請你計算可以獲得的最大收益!
題目分析
這是一道考察貪心策略的簡單題目,首先求出各個種類月餅的單價(即億元/萬噸),然後按照單價將各個種類的月餅降序排序,優先把單價高的月餅賣出去,最後達到求得結果就是我們要的答案。
易錯點:
- 題目中給的各個種類月餅的庫存量、總售價描述是“正數”,相應的變量都應該用double類型存儲。
代碼如下
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1005;
/**
* 因爲題目描述寫這個屬性是正數
* 故num, price都要用double類型
*/
struct Food {
double num, price;
double pri;
} f[maxn];
//按單價降序排序
bool cmp (const Food &A, const Food &B) {
return A.pri > B.pri;
}
int main()
{
int n, need;
scanf("%d %d", &n, &need);
for (int i = 0; i < n; i++) scanf("%lf", &f[i].num);
for (int i = 0; i < n; i++) {
scanf("%lf", &f[i].price);
f[i].pri = f[i].price / f[i].num;
}
sort(f, f + n, cmp);
double ans = 0.0;
for (int i = 0; i < n; i++) {
if (f[i].num < need) {
ans += f[i].price;
need -= f[i].num;
} else {
ans += need * f[i].pri;
break;
}
}
printf("%.2f\n", ans);
return 0;
}
如果覺得本對你有所幫助,記得點個贊哦~