揹包九講 學習筆記(一)

2022-09-13 18:45:10 字數 584 閱讀 2821

本文是針對揹包九講2.0的學習筆記。給定n個物體和乙個揹包,物品i的重量是wi,價值vi,揹包容量為c,物品只能選擇不裝或裝入揹包,問如何選擇裝入揹包的物品,使裝入揹包中的物品的總價值最大?

輸入:c>0,wi>0,vi>0,1≤i≤n

輸出:(x

1,x2,…

,xn),$ x_i \in \ $,滿足$\sum_w_i$,$x_i \le c$,使得$\sum_v_ix_i$最大

狀態轉移:$f[i,v]=max\$(僅考慮第$i$件物品放或者不放)

但在我們實際使用的狀態方程中,往往是沒有$i$這個引數的【其實表示兩個引數的狀態轉移函式的複雜度以及如何去除i都困擾過我】

初始化時,若只要求裝滿揹包,$f[0]$設為0,其餘均設為$-\infty$,如果不要求揹包裝滿,只希望**最大,初始化全為0。【是否為合法解的區別】

事實上,這要求在每次主迴圈中我們以$v \leftarrow v \dots 0$的遞減順序計算$f[v]$,這樣才能保證計算$f[v]$時,$f[v-c_i]$儲存的是狀態$f[i-1,v-c_i]$的值

揹包問題(揹包九講) 學習筆記

學習了dd大佬的揹包九講之後,個人的一些學習筆記以及一些看法。dp i j 表示前i個物品,容量為j的時候,最大的價值 思路 將前i件物品放入容量為v的揹包中求最大價值這個問題,若只考慮第i件物品的策略 放或不放 那麼問題就可以轉換成涉及前i 1的物品的問題。此時有兩種情況,1 不放第i件物品,那麼...

揹包九講學習筆記(2)

寫在前面 一方面學習揹包九講 這個十分清晰,重點標記清楚。但有些需要自己理解的和重點的,我做了如下筆記,方便別人理解,也方便自己複習,如有錯誤,歡迎指正。題目特點1.n種物品v容量,每種物品費用c i 價值w i 2.每種物品無限件 3.要求 費用和不超過揹包容量且價值總和最小簡單思路 基本思路 從...

《揹包9講》學習

0 1揹包 題目描述見 beibao 01揹包.cpp 定義控制台應用程式的入口點。include stdafx.h include include using namespace std const int nn 1010 int v nn w nn int f nn nn int main fo...