多重揹包的二進位制優化

2022-09-04 22:39:22 字數 285 閱讀 3522

在多重揹包問題中物品的數量被限制,沒辦法法像完全揹包或者01揹包那樣簡單的dp

但是通過二進位制優化仍可以將多重揹包問題轉化為01揹包問題

我們可以將每乙個物品的數量按二進位制的辦法分成很多份

比如乙個物品的數量是9

那麼就可以將1,2,4,2將物體分成四份

同時該物體的價值和質量都變成1,2,4,2這麼多倍

那麼無論我們想要選擇多少個這個物體,我們都可以由它所分成的份來表示,比如我們要六份,那麼就可以選擇2+4=6

這樣多重揹包問題就簡化為了01揹包問題。

多重揹包二進位制優化

多重揹包二進位制優化 將價值數量相同的物品分成1,2,4,8.因為100以內任何數都可以由幾個2的n次方數組成。所以,有遍歷沒乙個數變為遍歷每乙個2的n次方數。例題 有n種物品,每種物品的數量為c1,c2.cn。從中任選若干件放在容量為w的揹包裡,每種物品的體積為w1,w2.wn wi為整數 與之相...

多重揹包(二進位制優化)

馬上就要輕院校賽了,沒時間了,下面是網上找的多重揹包,感覺很好 void zeroonepack int cost,int weight,int n void completepack int cost,int weight,int n void multipack int c,int w,int ...

多重揹包二進位制優化

時間長不寫 感覺變菜了。整體優化思路和快速冪很相近 如果第i個物品有num i 個,花費是 c i 價值是 v i 那麼我們可以把它拆分成數個物品。比如某個物品數量是14 花費是cost 價值是value 1 2 4 7 就可以把14個相同物品看成 4 個不同的物品,物品 數量花費 價值第乙個 11...