比赛 |
2022级DP专题练习赛4 |
评测结果 |
AAAAATTTTAAAAAATTTTA |
题目名称 |
还是“金明的预算方案” |
最终得分 |
60 |
用户昵称 |
zxhhh |
运行时间 |
9.704 s |
代码语言 |
C++ |
内存使用 |
10.94 MiB |
提交时间 |
2023-02-20 20:48:09 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N = 65, M = 32005;
int dp[N][M], n, m, s, v[N], w[N];
vector <int> e[N];
void dfs (int p) {
for (int j = m;j >= w[p];j--) dp[p][j] = v[p];
// cout << p << endl;
for (int i = 0;i < e[p].size();i++) {
int y = e[p][i];
dfs(y);
for (int j = m;j >= w[p];j--) for (int z = j;z >= w[p];z--) dp[p][j] = max(dp[p][j], dp[p][z] + dp[y][j - z]);
}
}
int main () {
freopen("budgetb.in", "r", stdin);
freopen("budgetb.out", "w", stdout);
cin >> m >> n >> s;
for (int i = 1;i <= n;i++) {
int q;
cin >> w[i] >> v[i] >> q;
v[i] = v[i] * w[i];
e[q].push_back(i);
}
dfs(0);
cout << dp[0][m] << endl;
return 0;
}