ZCMU 1400 給報銷嗎

2021-07-26 13:47:30 字數 1270 閱讀 8413

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,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。說明 分隔時可以重複使用字典中的單詞。你可以假設字典中沒有重複的單詞。題目鏈結 這道題明顯是個搜尋的題目。但問題在於如何進行搜尋。每個位置可能...