这道题貌似可以不优化一维数组过掉?
查看原帖
这道题貌似可以不优化一维数组过掉?
411727
Kingna楼主2023/8/2 16:17

放一部分代码

int n, L[N], R[N], a[N], b[N], c[N], dep[N], sz[N];
long long dp[N][40][40]; // 40卡点

void dfs(int u, int depth, int fa) {
	if (u == 0) return;
	if (u >= n) {
		for (int i = 0; i <= depth; i++) {
			for (int j = 0; j <= depth; j++) {
				if (i + j <= depth) {
					dp[u][i][j] = 1ll * c[u] * (1ll * a[u] + i) * (b[u] + j);
				}
			}
		}
		return;
	}
	
	dfs(L[u], depth + 1, u); dfs(R[u], depth + 1, u);
	for (int i = 0; i <= depth; i++) {
		for (int j = 0; j <= depth; j++) {
			if (i + j <= depth) {dp[u][i][j] = 1e18;
				dp[u][i][j] = min(dp[u][i][j], dp[L[u]][i + 1][j] + dp[R[u]][i][j]);
				dp[u][i][j] = min(dp[u][i][j], dp[L[u]][i][j] + dp[R[u]][i][j + 1]);
			}
		}
	}
}
2023/8/2 16:17
加载中...