1、B站视频链接:E16 背包DP 分组背包_哔哩哔哩_bilibili
#include <bits/stdc++.h>
using namespace std;
const int N=110;
int v[N][N],w[N][N],s[N];
// v[i,j]:第i组第j个物品的体积 s[i]:第i组物品的个数
int f[N][N];
// f[i,j]:前i组物品,能放入容量为j的背包的最大值
int main(){int n,V;cin>>n>>V;for(int i=1;i<=n;i++){cin>>s[i];for(int j=1;j<=s[i];j++){cin>>v[i][j]>>w[i][j];}}for(int i=1;i<=n;i++){for(int j=1;j<=V;j++){for(int k=0;k<=s[i];k++){if(j>=v[i][k]){f[i][j]=max(f[i][j],f[i-1][j-v[i][k]]+w[i][k]);}}}}cout<<f[n][V];return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N=110;
int f[N],v[N],w[N];int main(){int n,V,s;cin>>n>>V;for(int i=1;i<=n;i++){cin>>s;for(int j=1;j<=s;j++){cin>>v[j]>>w[j];}for(int j=V;j>=1;j--){for(int k=0;k<=s;k++){if(j>=v[k])f[j]=max(f[j],f[j-v[k]]+w[k]);}}}cout<<f[V];return 0;
}
题目链接:通天之分组背包 - 洛谷
[NOIP2006 提高组] 金明的预算方案 - 洛谷