hihocoder 1055 刷油漆(树形DP+背包)
2015-04-10 16:40
246 查看
dp[i][j]表示i节点,已经染色j个节点的最大价值,那就是树形DP,每个节点做一次背包
代码:
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 105;
int n, m, val
, dp
;
vector<int> g
;
void dfs(int u, int p) {
memset(dp[u], 0, sizeof(dp[u]));
dp[u][1] = val[u];
for (int i = 0; i < g[u].size(); i++) {
int v = g[u][i];
if (v == p) continue;
dfs(v, u);
for (int j = m; j >= 2; j--) {
for (int k = 1; k < j; k++) {
dp[u][j] = max(dp[u][j], dp[u][j - k] + dp[v][k]);
}
}
}
}
int main() {
while (~scanf("%d%d", &n, &m)) {
for (int i = 1; i <= n; i++) {
scanf("%d", &val[i]);
g[i].clear();
}
int u, v;
for (int i = 0; i < n - 1; i++) {
scanf("%d%d", &u, &v);
g[u].push_back(v);
g[v].push_back(u);
}
dfs(1, 0);
printf("%d\n", dp[1][m]);
}
return 0;
}
代码:
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 105;
int n, m, val
, dp
;
vector<int> g
;
void dfs(int u, int p) {
memset(dp[u], 0, sizeof(dp[u]));
dp[u][1] = val[u];
for (int i = 0; i < g[u].size(); i++) {
int v = g[u][i];
if (v == p) continue;
dfs(v, u);
for (int j = m; j >= 2; j--) {
for (int k = 1; k < j; k++) {
dp[u][j] = max(dp[u][j], dp[u][j - k] + dp[v][k]);
}
}
}
}
int main() {
while (~scanf("%d%d", &n, &m)) {
for (int i = 1; i <= n; i++) {
scanf("%d", &val[i]);
g[i].clear();
}
int u, v;
for (int i = 0; i < n - 1; i++) {
scanf("%d%d", &u, &v);
g[u].push_back(v);
g[v].push_back(u);
}
dfs(1, 0);
printf("%d\n", dp[1][m]);
}
return 0;
}
相关文章推荐
- Hihocoder 1055 树形DP(分组背包)
- hihoCoder#1055 : 刷油漆 (树形DP+01背包)
- hihocoder-1055 刷油漆(树形DP)
- hihoCoder1055.刷油漆——树形Dp+01背包
- hihocoder 1055 刷油漆(树形dp)
- HihoCoder 1055 : 刷油漆 树形DP第一题(对象 点)
- 刷油漆(hihocoder1055)树形DP
- 【HIHOCODER 1055】 刷油漆(树上背包)
- HDU - 4044 J - GeoDefense 【树形DP+分组背包】
- HDU 1011 Starship Troopers (树形DP+背包)
- POJ 2486 Apple Tree 树形dp+背包
- hunnu 11085 count letter tree 树形DP+背包
- HDU 4003 (树形DP+背包)
- hdu 4003 树形dp+分组背包
- hihoCoder hiho一下 第十二周 #1055 : 刷油漆 (树上DP)
- POJ 1155 TELE (树形DP+背包)
- POJ 1155 经典树形dp+分组背包 + 模板
- HIHO #1055 : 刷油漆(树形dp 入门)
- HDOJ-4276(树形DP+背包DP)
- hdu 1561 The more, The Better(树形DP+背包)两种建树方式都对