DP之揹包學習記錄 一

2021-06-28 11:05:08 字數 862 閱讀 9891

昨天看了01揹包,完全揹包,和多重揹包這三個問題,然後呢,01和完全的區別在於順序還是倒序.今天偷點懶,寫完解題報告就滾床睡,,剛才看到了whud大牛的部落格,好棒,真的好棒,自己要加油啦,在2023年希望有個質的飛越。

揹包問題是dp問題的乙個分支,所有揹包問題呢,都是可以劃分到01揹包這個最簡單基礎的揹包問題上,然後呢,我們要盡量類揹包問題轉化到01揹包問題····

我們先說說01揹包有n

件物品和乙個容量為

v的揹包。第

i件物品的費用是

c[i]

,價值是

w[i]

。求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。

對於這個問題呢,我們需要考慮的是放或者不放,這個才是最重要,所以不難有狀態轉移方程 dp[i][v] = max(dp[i-1][v],dp[i-1][v-c[i]]+w[i])

dp[i][v]表達的是第i件物品放入容積v中的價值,

這個狀態轉移方程就兩個方向,放還是不放,如果不放第i件物品的話,就應該是dp[i-1][v],也就是與i-1件物品放入容量v中的價值與放第i件商品,轉化為前

i-1件物品放入剩下的容量為

v-c[i]

的揹包中的價值比較。

這個複雜度已經無法優化,但是空間我們還是可以繼續優化的

for(int i = 1;i<=n;i++)物品種類

}恩,這個就差不多是01揹包兩種方法的解釋了

為什麼費用迴圈是要從v開始的呢

這正是為了保證每件物品只選一次,保證在考慮

「選入第

i件物品

」這件策略時,依據的是乙個絕無已經選入第

i件物品的子結果

f[i-1][v-c[i]]

DP之揹包學習記錄(三)

說完了01揹包,完全揹包,我們接著學習多重揹包,還是介紹下問題題目有 n種物品和乙個容量為 v的揹包。第 i種物品最多有 n i 件可用,每件費用是 c i 價值是 w i 求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。我們還是老樣子,先寫出多重揹包的類似於01揹包的狀...

DP學習之完全揹包

有 n nn 種物品和乙個容量是 v 的揹包,每種物品都有無限件可用。第 i ii 種物品的體積是v iv i vi 價值是 w iw i wi 求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。資料範圍 0 v 1000 00v 10 000 wi 1000 00 wi 1...

揹包dp之01揹包

現在我們有n個配件,他們有不同的價值.但是我們揹包的容量是有限的,因為我們只有乙個一級包,所以我們最多可以裝v重量的東西.但是為了能更好的吃到雞 不存在的 我們要攜帶更有價值的配件,請問我們最多能拿多少價值的配件來當快遞員呢?輸入的第一行是t,表示有一共要打t場比賽.每組資料由三行組成.第一行包含兩...