【例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...