比赛 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;
}