题解 | #白兔的字符串#

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;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务