多重揹包 Transport Ship

2022-06-20 01:09:09 字數 661 閱讀 3689

【**】

2023年焦作網路賽

【參考部落格】

【題意】

有n種船隻,每種船隻的載貨量為v[i],每種船隻有2^c[i]-1種,有q次詢問,每次問有多少種載貨方式填滿容量s。

【思路】

如果用裸的01揹包的話時間複雜度是o(n*2^c[i]*10000),顯然是會超時的,但是我們可以把每一種船隻合併,比如船隻有2^x-1艘的話,就拆成2^0+2^1+2^2+...+2^(x-1),1~2^x-1的任意乙個數都可以由拆分出來的數組成,將所有合併後的結果進行一次01揹包即可。

1 #include2 #include3 #include4

using

namespace

std;

5 typedef long

long

ll;6

const

int m = 1e4+5;7

const

int mod = 1e9+7

;8 ll dp[m],v[25],c[25

],v;

9int

main()

1027}28

}29for(int i=1;i<=q;i++)33}

34return0;

35 }

view code

python多重揹包 多重揹包

多重揹包問題 有 n 種物品和乙個容量是 v 的揹包。第 i 種物品最多有 si 件,每件體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使物品體積總和不超過揹包容量,且價值總和最大。輸出最大價值。資料範圍 0 n v 100 0 vi wi si 100 樸素版多重揹包問題 樸素版完全揹包問...

多維多重揹包問題 01揹包,完全揹包,多重揹包

csdn 專業it技術社群 登入 blog.csdn.net有n件物品和乙個容量為v的揹包。第i件物品的費用是w i 價值是v i 求將哪些物品裝入揹包可使價值總和最大。1.1空間優化 這要求在每次主迴圈中我們以 v v 0 的遞減順序計算 f v 這樣才能保證計算 f v 時 f v ci 儲存的...

揹包學習 多重揹包揹包

有n種物品和乙個容量為v的揹包。第i種物品最多有n i 件可用,每件費用是c i 價值是w i 求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。狀態轉移方程 f i v max 此時他面臨的不是01揹包的選與不選的問題,而是從n i 裡面選多少個的問題。實現方法 1 轉化...