题解 | #白兔的字符串#
xinjun与阴阳师
https://ac.nowcoder.com/acm/problem/14602
本题为一道 分组背包 问题
1.坑点:v[i][j]代表价值,w[i][j]代表容量,我之前写的题这两个意思是反过来的
上代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int v[N][N],w[N][N],s[N];
int f[N];
int n,m,t;
int main()
{
cin>>t;
while(t--)
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>s[i];
//注意本题的坑点,这里的v[i][j]代表价值,w[i][j]代表容量!!!
for(int j=1;j<=s[i];j++) cin>>v[i][j];
for(int j=1;j<=s[i];j++) cin>>w[i][j];
}
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++)
for(int j=m;j>=0;j--)
for(int k=1;k<=s[i];k++)
if(j>=w[i][k])
f[j]=max(f[j],f[j-w[i][k]]+v[i][k]);
cout<<f[m]<<endl;
}
return 0;
}