揹包九講之七(有依賴的揹包問題)

2022-08-24 21:24:08 字數 877 閱讀 9626

1/*2

即物品間存在依賴,比如i依賴於j,表示若選物品i,則必須選物品j

34有很多個箱子,想買箱子中的物品必須先買下箱子,典型的依賴揹包

5將不依賴其他物品的物品稱為主件,依賴其他物品的物品稱為附件

6我們有n個箱子,箱子裡面的物品個數為cnt[i]

7那麼箱子稱為主件,箱子裡面的物品稱為附件

8那麼考慮乙個主件和它附件的集合,那麼有2^n+1種策略,每種策略都是互斥的。所以它是分組揹包問題。

9但是不能像一般的分組揹包那樣處理,因為組內有2^n+1種。

10但是考慮到費用相同時,只選擇價值最大的。所以可以對組內的附件進行01揹包,得到費用依次為v-c[i]...0的最大價值

11dp2[v-c[i]...0]

1213

*/14 #include 15 #include

16int dp[100000+10],dp2[100000+10

];17

int box[55],cnt[55],price[55][11],value[55][11

];18 inline int max(const

int &a, const

int &b)

1922

intmain()

2338

for(k=box[i];k<=v; ++k)

39 dp[k] = max(dp[k],dp2[k-box[i]]);//

當容量為k時,取第i組的物品時得到的最大值和不取比較哪個大40}

41 printf("

%d\n

",dp[v]);42}

43return0;

44 }

c 揹包九講之有依賴的揹包問題

一 揹包九講總述 關於動態規劃問題,最典型的就是揹包九講,先理解揹包九講後再總結關於動態規劃的問題。二 有依賴的揹包問題這個問題理解起來挺簡單吧,就是如果買一件物品 附件 就必須買另一件 主件 這裡為了簡化問題,就假設主件不依賴另乙個物品,附件不被另乙個物品依賴,沒有某件物品同時依賴多件物品。不知道...

揹包九講 01揹包問題

1 01揹包問題描述 已知 有 n 件物品和乙個容量為 v 的揹包。第i件物品的重量為w i 得到的價值是 c i 問題 求解將哪些物品裝入揹包可使價值總和最大。條件 每種物品只有一件,可以選擇放或者不放 2 基本思路 01揹包的特點 每種物品只有一件,可以選擇放或者不放 子問題定義狀態f i v ...

揹包問題模板(揹包九講)

題目 有 n 件物品和乙個容量為 v 的揹包。第 i 件物品的體積 費用 是 c i 價值是 w i 求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。如下 一維陣列 include include include using namespace std define m ...