我的代码:
#include <iostream>
using namespace std;
const int MAXN = 1e3 + 1;
int n, m, t;
int a[MAXN], b[MAXN], group[MAXN], g[MAXN][MAXN], dp[MAXN];
int main() {
cin >> m >> n;
for (int i = 1; i <= n; i ++ ) {
int x;
cin >> a[i] >> b[i] >> x;
t = max(t, x);
group[x] ++ ;
g[x][group[x]] = i;
}
for (int i = 1; i <= t; i ++ )
for (int j = m; j >= 0; j -- )
for (int k = 1; k <= group[i]; k ++ )
if (j > a[g[i][k]])
dp[j] = max(dp[j], dp[j - a[g[i][k]]] + b[g[i][k]]);
cout << dp[m] << endl;
return 0;
}
提交记录