代码如下:
#include <bits/stdc++.h>
using namespace std;
int dp[10001];
void solve() {
int m, n;
cin >> m >> n;
int s = 0;
vector<vector<pair<int, int>>> group(101);
for (int i = 1; i <= n; i++) {
int a, b, c;
cin >> a >> b >> c;
s = max(s, c);
group[c].emplace_back(a, b);
}
for (int i = 1; i <= s; i++) {
for (int j = m; j >= 0; j--) {
vector<pair<int, int>> b = group[i];
for (int k = 0; k < group[i].size() && j >= b[k].first; k++) {
dp[j] = max(dp[j], dp[j-b[k].first]+b[k].second);
}
}
}
cout << dp[m] << endl;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
solve();
}