#include<bits/stdc++.h>
using namespace std;
#define int long long
struct node{
int w,v;
}a[1010];
int n,m;
int size[1010];
int g[1010][1010];
int dp[1010];
int num_g;
signed main()
{
cin >> m >> n;
for(int i=1;i<=n;i++)
{
int x;
cin >> a[i].w >> a[i].v >> x;
num_g=max(num_g,x);
size[x]++;
g[x][size[x]]=i;
}
for(int i=1;i<=num_g;i++)
{
for(int j=m;j>=0;j--)
{
for(int k=1;k<=size[i];k++)
{
if(j>a[g[i][k]].w)
dp[j]=max(dp[j],dp[j-a[g[i][k]].w]+a[g[i][k]].v);
}
}
}
cout << dp[m];
return 0;
}
与第一篇题解思路基本相同,wa了3,6两个点,在线求改