DP 分組揹包例題

2021-08-15 12:39:51 字數 1189 閱讀 3692

【例9.16】分組揹包

時間限制

: 1000 ms        

記憶體限制

: 65536 kb

提交數: 192    

通過數: 122 

【題目描述】

乙個旅行者有乙個最多能裝

v公斤的揹包,現在有

n件物品,它們的重量分別是w1

,w2,

...,wn

w1,w2,

...,wn

,它們的價值分別為c1

,c2,...,cn

c1,c2,...,cn

。這些物品被劃分為若干組,每組中的物品互相衝突,最多選一件。求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。

【輸入】

第一行:三個整數,

v(揹包容量,

v≤200),n(

物品數量,

n≤30)和t(

最大組號,

t≤10);第

2..n+1

行:每行三個整數wi

,ci,

pwi,ci,p

,表示每個物品的重量,價值,所屬組號。

【輸出】

僅一行,乙個數,表示最大總價值。

【輸入樣例】

10 6 3

2 1 1

3 3 1

4 8 2

6 9 2

2 8 3

3 9 3

【輸出樣例】

20演算法分析:

**實現:

#include using namespace std;

int main()

for(i=1;i<=t;i++) //組的列舉

for(j=v;j>=0;j--) //列舉揹包的容量

for(k=1;k<=a[i][0];k++) // 該組的成員

if(j>=w[a[i][k]])

cout

}

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

1.分組揹包模板題目 有n組物品,每組有k種物品,每種物品有體積和價值,每組選乙個,不超過揹包體積v,求最大值。狀態轉移方程 f j max v i j 表示第i組物品第j種物品的體積,w含義一樣,表示價值 方程含義可以參考我之前的部落格,揹包dp 都有類似的解釋 來一組偽 for 列舉每一組 fo...

DP經典例題 揹包專題

揹包的基本模型 給你乙個容量為v的揹包和若干種物品,在一定的限制條件下 每種物品都占用一定容量 問最多能放進多少價值的物品?題意 有n個重量和價值分別為wi,vi,從這些物品中挑選總重量不超過w的物品,使其價值最大,輸出價值最大值 其中每個物品最多只能放一件 這題其實用dfs也可以做,但超時 確認子...

分組揹包例題(如何記錄組別)

p1757 通天之分組揹包 洛谷 電腦科學教育新生態 luogu.com.cn 這道題我真的會酸q!好笨啊,忘記了桶排序可以將組別分清楚,非得去搞結構體,麻煩還不對。注意審題,第一行輸入的是總體重和個數,別輸入反了。唉,一定要記得桶排序啊喂!1 include 2 using namespace s...