混合揹包(模板)

2021-09-28 16:20:00 字數 781 閱讀 4342

額,鑑於寫的文章太少,本來這一篇可以加在一起原來的揹包彙總中,

但是,那樣太長啦,就分開寫一下(順便加一點原創量,我太卑微啦)。

想看一下其他的揹包板子戳一戳-》-》揹包彙總

ok,進入正題:

所謂混合揹包就是,題目中的物品既有限定數目的物品,也有可以無限次使用的物品,揹包的體積還是定值,這就需要我們,分開討論一下。

首先:我們知道01揹包與多重揹包的區別就是,多重揹包需要套用一下二進位制優化,但是核心還是01揹包,所以我們可以把01揹包與多重揹包歸結在乙個子問題中。而完全揹包放在另乙個子問題中。

其次:下面就是安排一下判斷語句即可,因為較為簡單,看**即可

#includeusing namespace std;

const int maxn=1e4+7;

int w[maxn],v[maxn],tot[maxn];

int dp[200010];

int main()

for(int k=1; k=w[i]*k; j--)

dp[j]=max(dp[j],dp[j-w[i]*k]+v[i]*k);

x-=k;

}if(x)

for(int j=v; j>=w[i]*x; j--)///相當於還剩乙個物品未考慮

dp[j]=max(dp[j],dp[j-w[i]*x]+v[i]*x);}}

cout《感覺這樣學習,還是有點用的,推薦大家能夠按照板塊的學習,這樣不會太亂,也會更精一點。

每個人都應該有自信說自己是全世界最亮的仔!!!

(但也不能驕傲)

模板練習 混合揹包

這次練習的是揹包模板 根據三種情況分別處理 把多重揹包轉換成01揹包處理 一開始寫的時候 思路偏了 把多重揹包 分成了1 w i 2 w i p i w i 這樣的情況 然後再當01揹包來寫的 結果不用多說了 改回來的時候又忘了改變量名 感覺自己宛如乙個智障 include include incl...

混合揹包問題 模板

第二天叫醒我的不是鬧鐘,是夢想!有 n 種物品和乙個容量是 v 的揹包。物品一共有三類 第一類物品只能用1次 01揹包 第二類物品可以用無限次 完全揹包 第三類物品最多只能用 si 次 多重揹包 每種體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使物品體積總和不超過揹包容量,且價值總和最大。...

揹包模板(01 多重 混合)

01揹包 需要注意的是 j 的迴圈為從大到小 include using namespace std const int n 10010 int f n int v n w n v n 表示價值,w n 表示體積或者重量 intmain for int i 0 icout 多重揹包 一般轉換成01揹...