非整數揹包

2021-07-15 13:28:41 字數 1176 閱讀 1758

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 

非整數的揹包問題,把非整數變化整數進行計算

#include #include #include #include #include using namespace std;

int dp[5000000],v[50000]; //陣列必須開大!!

int main()

if(p==1&&a1<=600&&b1<=600&&c1<=600&&sum<=1000)

}for(i=1;i<=k-1;i++)

printf("%.2lf\n",dp[(int)(z*100)]/100.0);

} return 0;

}

整數求和(揹包問題)

題目描述 給定整數n,取若干個1到n的整數可求和等於整數m,程式設計求出所有組合的個數。比如當n 6,m 8時,有四種組合 2,6 3,5 1,2,5 1,3,4 限定n和m小於120 輸入 整數n和m 輸出 求和等於m的所有組合的個數。樣例 輸入 6 8 輸出 4 方法典型的揹包問題 def fu...

USACO Subset 整數劃分01揹包

又是去理解了一次01揹包。這道題目的意思就是給你乙個n n 40 表示有乙個集合 你要將它劃分成相等的兩個子集合,求有幾種劃分方式 如果n是奇數,那麼顯然不能由相同的兩個sub sum組成,所以要輸出 0 現在我們定義乙個陣列dp i j 表示前i個數組合起來的和是j的種數 接下來就和01揹包很像了...

揹包 01揹包,完全揹包,多重揹包

哈哈 01揹包 f i v max 完全揹包 f i v max 多重揹包 f i v max include include include include include define maxn 1000 using namespace std int n,cap int w maxn 重量 花...