#include <bits/stdc++.h>
using namespace std;
long long w[110][1010], v[110][1010];
bool group[110];
long long f[1010][1010];
int main()
{
int m, n;
cin >> m >> n;
int g = 0;
for(int i = 1; i <= n; i++)
{
int x, a, b;
cin >> a >> b >> x;
g += (!group[x]);
group[x] = true;
w[x][++w[x][0]] = a;
v[x][++v[x][0]] = b;
}
for(int i = 1; i <= g; i++)
{
for(int j = m; j >= 0; j--)
{
f[i][j] = f[i - 1][j];
for(int k = 1; k <= v[g][0]; k++)
{
if(w[i][k] > j) continue;
f[i][j] = max(f[i][j], f[i - 1][j - w[i][k]] + v[i][k]);
}
}
}
long long maxn = 0;
for(int i = 1; i <= m; i++)
{
maxn = max(maxn, f[g][i]);
}
cout << maxn << endl;
return 0;
}
帮忙看一下呗,才4分/(ㄒoㄒ)/~~