題目描述:node
月餅是中國人在中秋佳節時吃的一種傳統食品,不一樣地區有許多不一樣風味的月餅。現給定全部種類月餅的庫存量、總售價、以及市場的最大需求量,請你計算能夠得到的最大收益是多少。 注意:銷售時容許取出一部分庫存。樣例給出的情形是這樣的:假如咱們有 3 種月餅,其庫存量分別爲 1八、1五、10 萬噸,總售價分別爲 7五、7二、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
本人AC代碼:測試
// PAT_1020_月餅 # include <stdio.h> # include <stdlib.h> typedef struct Node { double Cun; double Shou; double M; }NODE, *pNode; int main(void) { int N; // Number double Max; // Needs int i, j; double In = 0.0; scanf("%d",&N); scanf("%lf",&Max); NODE No; pNode node = (pNode)malloc(sizeof(NODE)*N); //輸入信息,並計算性價比 for (i=0; i<N; i++) { scanf("%lf",&node[i].Cun); } for (i=0; i<N; i++) { scanf("%lf",&node[i].Shou); node[i].M = (double)node[i].Shou/(double)node[i].Cun; } // 排序 for (i=1; i<N; i++) { for (j=0; j<i; j++) { if (node[i].M > node[j].M) { No = node[i]; node[i] = node[j]; node[j] = No; } } } // 遍歷 // for (i=0; i<N; i++) // { // printf("i = %d Cun = %d, Xingjiabi = %f\n",i,node[i].Cun,node[i].M); // } i=0; // 開始計算 while (Max > 0 && i!=N) { if (node[i].Cun <= Max) { In += node[i].Shou; Max -= node[i].Cun; i++; } else { In = In+(Max*node[i].M); break; } } printf("%.2f\n",In); return 0; }
RRRspa