PAT-B 1020 月餅【貪心法】
PAT-B 1020 月餅
https://pintia.cn/problem-sets/994805260223102976/problems/994805301562163200
題目
月餅是中國人在中秋佳節時吃的一種傳統食品,不同地區有許多不同風味的月餅。現給定所有種類月餅的庫存量、總售價、以及市場的最大需求量,請你計算可以獲得的最大收益是多少。注意:銷售時允許取出一部分庫存。樣例給出的情形是這樣的:假如我們有 3 種月餅,其庫存量分別為 18、15、10 萬噸,總售價分別為 75、72、45 億元。如果市場的最大需求量只有 20 萬噸,那麼我們最大收益策略應該是賣出全部 15 萬噸第 2 種月餅、以及 5 萬噸第 3 種月餅,獲得 72 + 45/2 = 94.5(億元)。
輸入
每個輸入包含一個測試用例。每個測試用例先給出一個不超過 1000 的正整數 N 表示月餅的種類數、以及不超過 500(以萬噸為單位)的正整數 D 表示市場最大需求量。隨後一行給出 N 個正數表示每種月餅的庫存量(以萬噸為單位);最後一行給出 N 個正數表示每種月餅的總售價(以億元為單位)。數字間以空格分隔。
輸出
對每組測試用例,在一行中輸出最大收益,以億元為單位並精確到小數點後 2 位。
樣例輸入
3 20
18 15 10
75 72 45
樣例輸出
94.50
分析
貪心法,優先賣單位質量價值大的月餅,具體看程式。
C++程式
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1005;
struct Node{
double q,v;//q是庫存量,v是總售價
bool operator <(const Node &t)const
{
return v/q>t.v/t.q;
}
}a[N];
int main()
{
int n;
double d;
scanf("%d%lf",&n,&d);
for(int i=0;i<n;i++)
scanf("%lf",&a[i].q);
for(int i=0;i<n;i++)
scanf("%lf",&a[i].v);
sort(a,a+n);
double ans=0;
for(int i=0;i<n;i++)
{
if(d>=a[i].q)//所需量還大於等於月餅a[i]的庫存量
{
d-=a[i].q;
ans+=a[i].v;
}
else
{
ans+=d*(a[i].v/a[i].q);
break;
}
}
printf("%.2lf\n",ans);
return 0;
}
相關文章
- PAT B1020 月餅(簡單貪心)
- PAT-B1020 月餅
- 1020 月餅 (25分) + 測試點解析
- 貪心法
- L2-003 月餅【貪心】
- PAT-B 1092 最好吃的月餅【陣列】陣列
- 貪心法-Best Time to Buy and Sell Stock
- 【CCCC】L2-003 月餅 (25分),貪心排序排序
- PAT-B 1070 結繩【貪心】
- 【貪心法】奇數陣列 思路解析和程式碼陣列
- leedcode-分發餅乾(貪心演算法)演算法
- G69 字首線性基+貪心法 CF1100F Ivan and Burgers
- G64【模板】線性基 貪心法 P3812 最大異或和
- 1020-1026
- PAT1092 最好吃的月餅
- 月餅杯-web1_此夜圓Web
- echarts 餅圖巢狀 二級餅圖 子餅圖 複合餅圖Echarts巢狀
- 1020:列印ASCII碼(C C++)ASCIIC++
- PAT:1020. Tree Traversals (25) AC
- Python版中秋佳節月餅搶購指令碼Python指令碼
- L2-003 月餅 (25分)測試點2
- 餅圖
- 魔功心法-列舉篇
- 使用python繪製月餅,慢慢等待將至的中秋節Python
- 洛谷 P1020 導彈攔截
- 餅圖0625
- Android 折線圖之hellocharts (餅狀圖)餅圖Android
- PAT-B 1046 划拳
- 巧妙的煎餅
- 《天涯明月刀手遊》新門派從龍用什麼心法 從龍心法搭配推薦
- 貪心
- PAT-B 1064 朋友數
- Java解決 PTA L2-003 月餅 (25分) 超時問題Java
- 團隊管理的兩大入門心法
- 讀書筆記(9)《馮唐成事心法 》筆記
- Java內功心法,Set集合的詳解Java
- 底層遊戲生態觀:貪玩藍月們陷入“泥潭”遊戲
- 【matplotlib 實戰】--餅圖