HDOJ 1864 最大報銷額(貪心)

2021-07-04 08:34:25 字數 1224 閱讀 1345

problem description

現有一筆經費可以報銷一定額度的發票。允許報銷的發票型別包括買圖書(a類)、文具(b類)、差旅(c類),要求每張發票的總額不得超過1000元,每張發票上,單項物品的價值不得超過600元。現請你編寫程式,在給出的一堆發票中找出可以報銷的、不超過給定額度的最大報銷額。

input

測試輸入包含若干測試用例。每個測試用例的第1行包含兩個正數 q 和 n,其中 q 是給定的報銷額度,n(<=30)是發票張數。隨後是 n 行輸入,每行的格式為:m type_1:price_1 type_2:price_2 ... type_m:price_m其中正整數 m 是這張發票上所開物品的件數,type_i 和 price_i 是第 i 項物品的種類和價值。物品種類用乙個大寫英文本母表示。當n為0時,全部輸入結束,相應的結果不要輸出。

output

對每個測試用例輸出1行,即可以報銷的最大數額,精確到小數點後2位。

sample input

200.00 3

2 a:23.50 b:100.00

1 c:650.00

3 a:59.99 a:120.00 x:10.00

1200.00 2

2 b:600.00 a:400.00

1 c:200.50

1200.50 3

2 b:600.00 a:400.00

1 c:200.50

1 a:100.00

100.00 0

sample output

123.50

1000.00

1200.50

ac**:

#include#include#include#include#define maxn 100100

using namespace std;

struct s

a[maxn];

bool cmp(s aa,s bb)

int cost[5];

int main()

a[i].num=sum;

a[i].bz=flag;

}sort(a,a+n,cmp);

double max=0;

for(i=0;i}

printf("%.2lf\n",max);

} return 0;

}

HDOJ HDU 1864 最大報銷額 貪心

題目有點問題,原題中說的 應該是單類物品的價值不能超過600元。一開始以為是01揹包,後來按貪心寫過了。一張一張發票處理,讀入一整張發票的資料。然後檢查一下裡面是否有不能報銷的類別 即除abc 以外的其他類。然後看一下單類的價錢是否超過600。如都滿足題目所說能夠報銷的要求,則把它存到b陣列裡面,接...

HDOJ HDU 1864 最大報銷額 貪心

題目有點問題,原題中說的 應該是單類物品的價值不能超過600元。一開始以為是01揹包,後來按貪心寫過了。一張一張發票處理,讀入一整張發票的資料。然後檢查一下裡面是否有不能報銷的類別 即除abc 以外的其他類。然後看一下單類的價錢是否超過600。如都滿足題目所說能夠報銷的要求,則把它存到b陣列裡面,接...

HDU 1864 最大報銷額

這個題是乙個揹包題,要求求出能夠報賬的最大金額 思路 把每張發票的報賬總額算出來,然後跑一次01揹包即可 注意 1 如果發票中含有a b c以外的專案,則不可以報賬 2 發票中可能含有多個a專案,判斷超總額的時候需先累加 3 對小數的處理可以先乘以100 include include includ...