lzsyxxyjlyjl @ 2016-10-03 18:00:27
#include<iostream>
#include<cstdio>
using namespace std;
int v,n,c[33000],p[33000],q[33000],fj[33000][3],f[33000],num;
int main()
{
cin>>v>>n;
for (int i=1;i<=n;i++) {
cin>>c[i]>>p[i]>>q[i];
p[i]*=c[i];
if (q[i] && !fj[q[i]][1]) fj[q[i]][1]=i;
else if (q[i]) fj[q[i]][2]=i;
}
for (int i=1;i<=n;i++)
for (int j=v;j>=c[i];j--)
if (!q[i]) {
f[j]=max(f[j],f[j-c[i]]+p[i]);
if (fj[i][1] && j-c[i]-c[fj[i][1]]>=0)
f[j]=max(f[j],f[j-c[i]-c[fj[i][1]]]+p[i]+p[fj[i][1]]);
if (fj[i][2] && j-c[i]-c[fj[i][2]]>=0)
f[j]=max(f[j],f[j-c[i]-c[fj[i][2]]]+p[i]+p[fj[i][2]]);
if (fj[i][1] && fj[i][2] && j-c[i]-c[fj[i][1]]-c[fj[i][2]]>=0)
f[j]=max(f[j],f[j-c[i]-c[fj[i][1]-c[fj[i][2]]]]+p[i]+p[fj[i][1]]+p[fj[i][2]]);
}
cout<<f[v];
return 0;
}
by lzsyxxyjlyjl @ 2016-10-03 18:23:57
谢谢,已经找到问题了,[ ]写茬了…………