1. 程式人生 > >月餅 (25) 時間限制 1000 ms 記憶體限制 32768 KB 程式碼長度限制 100 KB 判斷程式 Standard (來自 小小)

月餅 (25) 時間限制 1000 ms 記憶體限制 32768 KB 程式碼長度限制 100 KB 判斷程式 Standard (來自 小小)

題目描述

月餅是中國人在中秋佳節時吃的一種傳統食品,不同地區有許多不同風味的月餅。現給定所有種類月餅的庫存量、總售價、以及市場的最大需
求量,請你計算可以獲得的最大收益是多少。

注意:銷售時允許取出一部分庫存。樣例給出的情形是這樣的:假如我們有3種月餅,其庫存量分別為18、15、10萬噸,總售價分別為75、
72、45億元。如果市場的最大需求量只有20萬噸,那麼我們最大收益策略應該是賣出全部15萬噸第2種月餅、以及5萬噸第3種月餅,獲得
 72 + 45/2 = 94.5(億元)。

輸入描述:

每個輸入包含1個測試用例。每個測試用例先給出一個不超過1000的正整數N表示月餅的種類數、以及不超過500(以萬噸為單位)的正整數
D表示市場最大需求量。隨後一行給出N個正數表示每種月餅的庫存量(以萬噸為單位);最後一行給出N個正數表示每種月餅的總售價(以億
元為單位)。數字間以空格分隔。

輸出描述:

對每組測試用例,在一行中輸出最大收益,以億元為單位並精確到小數點後2位。

輸入例子:

3 20
18 15 10
75 72 45

輸出例子:

94.50

#include<iostream> #include<cstdio> using namespace std; struct YueBing{ float count; float toallprice; float price; }; YueBing sort(YueBing A[1000]) { int i,j; YueBing TEMP; for(i=0;i<999;i++) for(j=i+1;j<1000;j++) if(A[j].price>A[i].price) { TEMP=A[i]; A[i]=A[j]; A[j]=TEMP; } return A[1000]; } int main() { int N,D; float sum=0; cin>>N>>D; YueBing YB[1000]; for(int i=0;i<N;i++) cin>>YB[i].count; for(int j=0;j<N;j++) { cin>>YB[j].toallprice; YB[j].price=YB[j].toallprice/YB[j].count; } sort(YB); for(int k=0;k<N;k++) { if(D<=YB[k].count) {sum=sum+D*YB[k].price;break;} else {sum=sum+YB[k].toallprice; D=D-YB[k].count;} } printf("%.2f",sum); return 0; }