BeingErnest @ 2018-10-31 13:00:39
作为一个在洛谷上先看题解仔细专研的人,最烦的便是看不出错了
int f[32001],w[61][3],v[61][3];
bool b[61];
using namespace std;
int main()
{
int n,m,bate=0;
memset(w,0,sizeof(w));
memset(v,0,sizeof(v));
memset(f,0,sizeof(f));
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
if(z==0)
{
bate++;
w[bate][0]=x;
v[bate][0]=x*y;
}
else
{
int s=1;
if(w[z][1]!=0) s=2;
w[z][s]=x;
v[z][s]=x*y;
}
}
for(int i=1;i<=bate;i++)
{
for(int j=n;j>=w[i][0];j--)
{
if(j-w[i][0]>=0)
f[j]=max(f[j],f[j-w[i][0]]+v[i][0]);
if(j-w[i][0]-w[i][1]>=0)
f[j]=max(f[j],f[j-w[i][0]-w[i][1]]+v[i][0]+v[i][1]);
if(j-w[i][0]-w[i][2]>=0)
f[j]=max(f[j],f[j-w[i][0]-w[i][2]]+v[i][0]+v[i][2]);
if(j-w[i][0]-w[i][1]-w[i][2]>=0)
f[j]=max(f[j],f[j-w[i][0]-w[i][1]-w[i][2]]+v[i][0]+v[i][1]+v[i][2]);
}
}
printf("%d",f[n]);
return 0;
}
by brealid @ 2018-10-31 13:04:52
@ chen_zhe 这里有一个自首的
by BeingErnest @ 2018-10-31 13:06:54
@航空信奥 你怕是刁难我 那你看看跟原本有什么区别
by brealid @ 2018-10-31 13:09:10
所以我并没有@,中间空了一个空格
by BeingErnest @ 2018-10-31 13:10:37
@航空信奥 我不知道,
请你帮帮我
by BeingErnest @ 2018-10-31 13:11:31
学编程真的很折腾人啊
by brealid @ 2018-10-31 13:13:00
我先看看@铭玘