60求助!
查看原帖
60求助!
499682
operator_楼主2021/10/11 18:42

Rt,#3#7#8#9错了,样例对的,下载个数据调不出来,求救

代码

#include<bits/stdc++.h>
using namespace std;
int n,m,v1,p1,q1,v[100][5],w[100][5],l[100],k,dp[40000];
int main()
{
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        cin>>v1>>p1>>q1;
        if(q1==0) 
        {
            v[++k][0]=v1*p1;
            w[k][0]=v1;
        }
        else 
        {
            v[q1][++l[q1]]=v1*p1;
            w[q1][l[q1]]=v1;
        }
    }
    for(int i=1;i<=k;i++)
    for(int j=n;j>=w[i][0];j--)
    {
        if(j>=w[i][0]) dp[j]=max(dp[j],dp[j-w[i][0]]+v[i][0]);
        if(l[i]>=1&&j>=w[i][0]+w[i][1]) dp[j]=max(dp[j],dp[j-w[i][0]-w[i][1]]+v[i][0]+v[i][1]);
        if(l[i]>=2&&j>=w[i][0]+w[i][2]) dp[j]=max(dp[j],dp[j-w[i][0]-w[i][2]]+v[i][0]+v[i][2]);
        if(l[i]>=2&&j>=w[i][0]+w[i][1]+w[i][2]) dp[j]=max(dp[j],dp[j-w[i][0]-w[i][1]-w[i][2]]+v[i][0]+v[i][1]+v[i][2]);
    }
    cout<<dp[n];
    return 0;
}
2021/10/11 18:42
加载中...