第三講 多重揹包問題 對揹包九講的學習

2022-07-03 15:48:19 字數 865 閱讀 8354

有n種物品和乙個容量為v的揹包。第i種物品最多有n[i]件可用,每件費用是c[i],價值是w[i]。求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。

對每個物品都考慮拿幾個(這個很好理解)

遞推式:f[i][v]=max

時間複雜度是o(v*σn[i])

這裡利用了二進位制的性質優化

時間複雜度:o(v*σlog n[i])

例子1:(注意看數字的顏色)

7個物品i的多重揹包問題=01揹包問題(物品1=1個物品i,物品2=2個物品i,物品3=4個物品i,,,)

2^0+2^1+2^2=7

7-7=0,不用補了

例子2:

8個物品i的多重揹包問題=01揹包問題(物品1=1個物品i,物品2=2個物品i,物品3=4個物品i,物品4=1個物品i)//藍色地方是補到8

1+2+4=7

< 8

8-7=1,再補個1

注意每次選的時候還是要判斷是否空間超出了

例子3:

5個物品i的多重揹包問題=01揹包問題(物品1=1個物品i,物品2=2個物品i,物品3=2個物品i)//藍色地方是補到5

1+2=3

<5  5-3=2,再補個2

比方說例子3我們看到了,物品1,物品2,物品3可以組合成0~5的任何數

這樣一來,就從多重揹包轉換成了01揹包

截圖自 揹包九講

最後那個o(vn)的方法我還沒學,先放著,以後其他學完了再學他

揹包九講 三 多重揹包問題

有n種物品和乙個容量為v的揹包,每種物品都有m im i mi 件可用,放入第i件物品的費用是c ic i ci 得到的價值是w iw i wi 求解將哪些物品裝入揹包可使價值綜合最大。如果看過之前的完全揹包問題,這裡的多重揹包問題應該就能秒殺了,當時考慮過將完全揹包轉化為01揹包問題求解,而多重揹...

揹包九講之多重揹包

揹包九講原文 有n種物品和乙個容量為v的揹包。第i種物品最多有n i 件可用,每件費用是c i 價值是w i 求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。這題目和完全揹包問題很類似。基本的方程只需將完全揹包問題的方程略微一改即可,因為對於第i種物品有n i 1種策略 ...

揹包九講之三(多重揹包)

證明如下 係數可取值 1,2,4,2 k 1 n i 2 k 1,k是使得n i 2 k 1 0的最大整數 前n項和為2 k 1,那麼最後一項為 n i 2 k 1 這些係數之和為n i 且0 n i 間的每乙個整數均可以用若干個係數的和表示 證明如下 先證明區間0.2 k 1,我們有係數1,2,4...