其实和01背包差不了多少
#include<iostream>
#include<algorithm>
using namespace std;
int wi[110][110],vi[110][110],s[110];
int dp[110];
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++){
int v,w;
cin>>wi[i][j]>>vi[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=v;j>=0;j--){
for(int k=1;k<=s[i];k++){
if(j>=wi[i][k]){
dp[j]=max(max(dp[j],dp[j-wi[i][k]]+vi[i][k]),dp[j]);
}
}
}
}
cout<<dp[v];
return 0;
}