operator_ @ 2021-10-11 18:42:47
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;
}
by operator_ @ 2021-10-11 18:44:24
似乎是v,w打反了的感觉,dalao们将就看看吧
by 芝麻馅儿汤圆 @ 2021-12-01 22:45:59
@gyh13372544403 附件和主件都是要计算序号的,我和你一样也被卡了,比如
1000 5
800 2 0
400 5 1
300 5 1
400 3 0
500 2 0
这个,第五行是四号,不是二号,输入处理那边附件部分也加个“++”就行
by operator_ @ 2021-12-02 17:48:35
@芝麻馅儿汤圆 感谢感谢,过了