演算法筆記 揹包DP 分組揹包

2021-08-19 19:52:10 字數 993 閱讀 6984

1.分組揹包模板題目:有n組物品,每組有k種物品,每種物品有體積和價值,每組選乙個,不超過揹包體積v,求最大值。

狀態轉移方程:f[j]=max 

v[i][j]表示第i組物品第j種物品的體積,w含義一樣,表示價值

方程含義可以參考我之前的部落格,揹包dp①②③④,都有類似的解釋

來一組偽**:

for 列舉每一組

for 列舉體積

for 列舉每一組的物品

狀態轉移

我們可以知道,每一組的物品是不會衝突的~~雖然我無法解釋

2.競賽真理:

牛玉鑫在經歷了無數次學科競賽的失敗以後,得到了乙個真理:做一題就要對一題!但是要完全正確地做對一題是要花很多時間(包括除錯時間),而競賽的時間有限。所以開始做題之前最好先認真審題,估計一下每一題如果要完全正確地做出來所需要的時間,然後選擇一些有把握的題目先做。 當然,如果做完了預先選擇的題目之後還有時間,但是這些時間又不足以完全解決一道題目,應該把其他的題目用貪心之類的演算法隨便做做,爭取「騙」一點分數。 問題求解: 根據每一題解題時間的估計值,確定一種做題方案(即哪些題目認真做,哪些題目「騙」分,哪些不做),使能在限定的時間內獲得最高的得分

因為只有兩種方案,所以不需要列舉每一組的物品,做兩遍即可

#include

using

namespace std;

int n,v;

int v1[

10000

]={}

;int v2[

10000

]={}

;int w1[

10000

]={}

;int w2[

10000

]={}

;int f[

10000000

]={}

;int

main

() cout

}

演算法筆記 揹包DP (0 1揹包)

1.0 1揹包 參考例題 hloj416採藥 二維解法 我們設f i j 為前i個物品放進容量為j的揹包的最大價值 設體積為v i 價值為w i 我們可以列舉i 1到n 和j 1到n 不難得出狀態轉移方程 f i j max 可以知道,當第i件物品不取時,總價值為f i 1 j 取得話,總價值為前i...

DP 揹包九講之分組揹包

有 n 組物品和乙個容量是 v 的揹包。每組物品有若干個,同一組內的物品最多只能選乙個。每件物品的體積是 vij,價值是 wij,其中 i 是組號,j 是組內編號。求解將哪些物品裝入揹包,可使物品總體積不超過揹包容量,且總價值最大。輸出最大價值。輸入格式 第一行有兩個整數 n,v,用空格隔開,分別表...

揹包 DP 揹包

揹包 題目 是dp中較為常見的題目 分為 0 1 揹包 完全揹包 和多重揹包 這三類 是越來越深入的首先來介紹一下 0 1揹包 首先 0 1 揹包的含義是 給你乙個容量位m的揹包 然後給你n個物品 每個物品具有一定價值和一定重量 會站一定的揹包空間 答案是在n個物品中那幾個 然後使得到的價值最大 首...