考慮以下問題:
有n
nn種物品,第i
ii種有z
iz_i
zi個,價值是y
iy_i
yi,重量是w
iw_i
wi,那麼把這些物品放入大小為x
xx的揹包,的最大價值是多少(n,
yi≤50
wi,z
i≤10
9)
(n,y_i\leq 50\ \ \ \ w_i,z_i\leq 10^9)
(n,yi
≤50w
i,z
i≤1
09)這個問題總重大,價值總和大沒辦法像之前那樣dp。
可以貪心考慮:
按照效率:yi/
wi
y_i/w_i
yi/wi
降序排序。
在最開始學揹包的時候,會有乙個錯誤的想法:對於權值為 vi,代價為 wi 的若干物品,我們計算出它們的價效比,貪心的選擇其中價效比高的部分物品。這樣之所以是錯的,是由於物品不能分割,這樣會有空閒的地方出現但又不能塞入更好的物品了。於是我們考慮:在什麼樣的情況下可以直接用價效比高的物品代替價效比低的物品呢?
假設兩個物品p,q
(p
p,q(pp, q(p,那麼如果q的個數大於y py_p yp,p還可以拿出y qy_q yq個,則選擇拿p的y qy_q yq個去換q的y py_p yp個顯然更優。 所以把每乙個都分出來50個,這麼多dp,剩下的貪心就ok了。 problem 完全揹包類似題目 不過求最小值 杭電1114 揹包九講 基本形式 有 n 種物品和乙個容量為 v 的揹包,每種物品都有無限件可用。放入第 i 種 物品的費用是 c i 價值是 w i 求解 將哪些物品裝入揹包,可使這些物品的耗 費的費用總和不超過揹包容量,且價值總和最大。基本思路 這個問題非常類似於... written with stackedit.每件物品不限數量 轉化為0 1揹包 每個物體盡可能多放 why?遞推式為 f i j max,kw i wf i,j max forall kw i f i,j max kw i w其他思路和01揹包相同.檢查每乙個k不會造成越界的k.0 1揹包就是完全... 有 n n n 種物品和乙個容量是 v v v 的揹包,每種物品都有無限件可用。第 i i i 種物品的體積是 v i vi vi,價值是 w i wi wi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。輸出最大價值。輸入格式 第一行兩個整數,n,v n,v n,v,用...
完全揹包dp
DP完全揹包
dp 完全揹包)