time limit: 1 sec
memory limit: 128 mb
submit: 65
solved: 11 [
submit][
status][
web board]
現有一筆經費可以報銷一定額度的發票。允許報銷的發票型別包括買圖書(a類)、文具(b類)、差旅(c類),要求每張發票的總額不得超過1000元,每張 發票上,單項物品的價值不得超過600元。現請你編寫程式,在給出的一堆發票中找出可以報銷的、不超過給定額度的最大報銷額。
測試輸入包含若干測試用例。每個測試用例的第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時,全部輸入結束,相應的結果不要輸出。
對每個測試用例輸出1行,即可以報銷的最大數額,精確到小數點後2位。
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 1
200.50 3
2 b:600.00 a:400.00
1 c:200.50
1 a:100.00
100.00 0
123.50
1000.00
1200.50
【解析】
其實這道題就是問我們在有限定的額度下能報銷的最大額度是多少,每一張發票要報銷的話要滿足這些情況,一就是
同一類的商品不能
超過600元,一張發票上最多只能是1000元,而且只能有a、b、c類商品。這道題因為有小數點,經
過看別人的做法原
來可以將它放大這樣就會比較好做。然後再用01揹包來做怎麼在這個容量下能盡可能多的去報銷。
#include#include#includeusing namespace std;
int f[3000001];
int main()
}q=f[m]*1.0/100;
printf("%.2f\n",q);
} return 0;
}
140 單詞拆分 II
給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。說明 分隔時可以重複使用字典中的單詞。你可以假設字典中沒有重複的單詞。示例 1 輸入 s catsanddog worddict cat ca...
140 單詞拆分 II(continue)
給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。說明 示例 1 輸入 s catsanddog worddict cat cats and sand dog 輸出 cats and dog ...
140 單詞拆分 II leecode
給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。說明 分隔時可以重複使用字典中的單詞。你可以假設字典中沒有重複的單詞。題目鏈結 這道題明顯是個搜尋的題目。但問題在於如何進行搜尋。每個位置可能...