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 32 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.501000.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...