DP完全揹包

2021-09-29 05:39:02 字數 1338 閱讀 2226

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揹包就是完全揹包的退化問題.

'''

@description:

@date: 2019-10-31 22:20:43

@author: i-hsien

@lasteditors: i-hsien

@lastedittime: 2019-10-31 22:42:45

'''def

build

(set

,weight):if

set==

or weight==0:

return

0 kr=

k=0while

(k*set[-

1][0

]<=weight)

:set[:

-1],weight-k*

set[-1

][0]

)+k*

set[-1

][1]

) k+=

1return

max(kr)

if __name__==

"__main__"

: temp=

input()

.split(

) maxweight=

int(temp[0]

) quantity=

int(temp[1]

) array=

#[(weight,value)]

for _ in

range

(quantity)

: tor=

input()

.split()(

int(tor[0]

),int(tor[1]

)))print

(int

(build(array,maxweight)

))

果然又tle了…

這遞迴不是等著爆棧嗎…

完全揹包dp

完全揹包類似題目 不過求最小值 杭電1114 揹包九講 基本形式 有 n 種物品和乙個容量為 v 的揹包,每種物品都有無限件可用。放入第 i 種 物品的費用是 c i 價值是 w i 求解 將哪些物品裝入揹包,可使這些物品的耗 費的費用總和不超過揹包容量,且價值總和最大。基本思路 這個問題非常類似於...

dp 完全揹包)

有 n n n 種物品和乙個容量是 v v v 的揹包,每種物品都有無限件可用。第 i i i 種物品的體積是 v i vi vi,價值是 w i wi wi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。輸出最大價值。輸入格式 第一行兩個整數,n,v n,v n,v,用...

完全揹包 貪心 dp

考慮以下問題 有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...