题解
【基础】分组背包问题
1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int f[105],v[105],w[105]; int main(){ int N,V; scanf("%d%d",&N,&V); for(int i=1;i<=N;i++){ int S; scanf("%d",&S); for(int j=1;j<=S;j++)scanf("%d%d",&v[j],&w[j]); for(int j=V;j>=0;j--){ for(int k=1;k<=S;k++){ if(j>=v[k])f[j]=max(f[j],f[j-v[k]]+w[k]); } } } printf("%d\n",f[V]); return 0; }
- 1