分組揹包神馬的

2021-06-04 21:16:18 字數 909 閱讀 6296

allen有n種蘋果,要將它放入容量為v的揹包。而allen厭煩吃同一種蘋果,所以每種至多只能放乙個。給出第i種中第j個蘋果的大小和價錢,求出能放入揹包的蘋果的總價錢最大值。

有多組測試資料,每組測試資料第一行為2個正整數,分別代表蘋果的個數n和揹包的容量v,n、v同時為0時結束測試,此時不輸出。接下來有n個小組。每個小組的第一行為1個正整數,代表該種蘋果的個數m。接下來有m行,每行有2個整數,用空格隔開,分別代表每個蘋果的大小c和價錢w。所有輸入數字的範圍大於等於0,小於等於100。

對每組測試資料輸出乙個整數,代表能放入揹包的蘋果的總價值。

3 3
1

1 1

2
1 1
2 1
1
3 1
0 0

2

昨天聽狐狸大大提起~~睡前的手機黨時間就看了看~~分組揹包還是很好理解的...就是多個01揹包...比如當前一組的物品.都是通過前乙個背好的包來更新當前的包..注意..這些物品都是通過前乙個包來更新當前的包..所以相互之間是影響不到的..再乙個..因為每次更新只與前乙個揹包相關..所以只需兩個揹包..滾動著使用就好了...

program:

#includeusing namespace std;

int n,v,dp[2][120],c,w,m,p,t,i,ans;

bool can[120];

int main()}}

ans=0;

for (i=0;i<=n;i++)

if (dp[t][i]>ans) ans=dp[t][i];

printf("%d\n",ans);

}return 0;

}

通天之分組揹包 分組揹包

本人水平有限,題解不到為處,請多多諒解 本蒟蒻謝謝大家 題目 傳送門 分組揹包的模板 偽 1 for int i 1 i 組數 i 6 7 直接套模板即可。code 1 include2 pragma gcc optimize 3 3const int n 1e5 10 4 using namesp...

混合揹包 分組揹包

啥是混合揹包呢,就是包含01揹包,完全揹包,多重揹包。有n件物品,揹包承重最大為m,w i 代表重量,v i 代表價值,s i 代表種類。s i 1,可用1次,s i 0,可用無限次,s i 0,可用s i 次.解法 見 const int maxn 1e4 5 int n,m,dp m 1 w n...

分組揹包,混合揹包,有依賴的揹包

一.分組揹包 每組只能選乙個 所謂分組揹包,就是把物品分成n組,每組裡面m個物品,從這n組中每組選乙個物品,使得在揹包體積是v的條件下價值最大 思路 對於每一組由於只能選乙個,所以就是決策這一組中選哪乙個獲得的價值最大 for int i 1 i n i 列舉這是第幾組 num i 代表第i組物品的...