我知道了...
因为我k那个for循环的条件不行,应该把“j >= b[k].first”放在循环里面。
---
AC代码:
```cpp
#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(); k++) {
if (j >= b[k].first) 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();
}
```
by Pjkang @ 2023-07-19 18:18:04