题目连接:https://www.luogu.org/problemnew/show/P1064
#include<bits/stdc++.h>
#define N 32005
using namespace std;
int f[N],manw[N],manc[N],anxw[N][3],anxc[N][3];
int main()
{
//freopen("t.txt","r",stdin);
int n,m,v,p,q;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&v,&p,&q);
if(!q)
{
manw[i]=v*p;
manc[i]=v;
}else
{
anxw[q][0]++;
anxw[q][anxw[q][0]]=v*p;
anxc[q][anxw[q][0]]=v;
}
}
for(int i=1;i<=m;i++)
{
if(!manc[i])continue;
for(int j=n;j>=manc[i];j--)
{
f[j]=max(f[j],f[j-manc[i]]+manw[i]);
if(j>=manc[i]+anxc[i][1])
f[j]=max(f[j],f[j-manc[i]-anxc[i][1]]+manw[i]+anxw[i][1]);
if(j>=manc[i]+anxc[i][2])
f[j]=max(f[j],f[j-manc[i]-anxc[i][2]]+manw[i]+anxw[i][2]);
if(j>=manc[i]+anxc[i][1]+anxc[i][2])
f[j]=max(f[j],f[j-manc[i]-anxc[i][1]-anxc[i][2]]+manw[i]+anxw[i][1]+anxw[i][2]);
}
}
printf("%d\n",f[n]);
return 0;
}