6666 分組揹包

2021-09-28 10:07:29 字數 876 閱讀 9106

【問題描述】

乙個旅行者有乙個最多能裝v公斤的揹包,現在有n件物品,它們的重量分別是w1,w2,···,wn,它們的價值分別是c1,c2,···,cn。這些物品被劃分為若干組,每組中的物品互相衝突,最多選一件。求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。

【輸入格式】

第1行:三個整數,v(揹包容量,v<=200),n(物品數量,n<=30)和t(最大組號,t <= 10);

第2至n+1行:每行三個整數wi,ci,p,表示每個物品的重量、價值、所屬組號。

【輸出格式】

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

【輸入樣例】

10 6 3

2 1 1

3 3 1

4 8 2

6 9 2

2 8 3

3 9 3

【輸出樣例】

【題解】

對於每乙個組而言,只有選其中乙個或者全不選。

列舉每一組,然後列舉容量,最後列舉該組中的所有物品。這樣可以做到每組中的物品只會被選一次。

這裡和0/1揹包的差別就是,0/1揹包是列舉單個物品,對單個物品都進行考慮是否要拿。而分組揹包,則是在組的前提下,對每個組內的物品進行決策,就是說把每個物品都放一下看看在j容量時,哪乙個更優。

f[j]表示容積不超過j時,物品所能獲得的最大收益。

【**】

#include #include int v,n,t,w[50],c[50],a[15][50],f[250];

void input_data()

}void get_ans() }

void output_ans()

int main()

分組揹包 Acwing 9 分組揹包問題

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

揹包九講 6 分組揹包

問題引入 有 n nn 組物品和乙個容量是 v vv 的揹包 每組物品有若干個,同一組內的物品最多只能選乙個 每件物品的體積是 vi,jv vi,j 價值是 wi,jw wi,j 其中 i ii 是組號,j jj 是組內編號 求解將哪些物品裝入揹包,可使物品總體積不超過揹包容量,且總價值最大,輸出最...

hdu 1712 分組揹包

分組的揹包問題 問題 有n件物品和乙個容量為v的揹包。第i件物品的費用是c i 價值是w i 這些物品被劃分為若干組,每組中的物品互相衝突,最多選一件。求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。演算法 這個問題變成了每組物品有若干種策略 是選擇本組的某一件,還是一件...