博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2486 Apple Tree(树形DP)
阅读量:7079 次
发布时间:2019-06-28

本文共 1809 字,大约阅读时间需要 6 分钟。

总结

1. 这里 dp[][][] 不是恰好走 k 步, 而是最多走 k 步. 恰好和最多的区别就在于 dp 数组的初始化上了

 

代码

/* * source.cpp * *  Created on: Apr 7, 2014 *      Author: sangs */#include 
#include
#include
#include
#include
#include
#include
using namespace std;int val[1000];int dp[500][500][2];vector
graph[1000];/* * dp[u][t][0] start from u and end at u, maximum income in t steps * dp[u][t][1] .............not end at u, maximum income in ....... * dp[u][t][0] = max(dp[u][t][0], dp[u][t-2-k][0] + dp[v][k][0]) v is child of u * dp[u][t][1] = max(dp[u][t][1], dp[u][t-1-k][0] + dp[v][k][1]) v is child of u and girl end at v * dp[u][t][1] = max(dp[u][t][1], dp[u][t-2-k][1] + dp[v][k][0]) v is child of u and girl end at another child of u */void solve_dp(int u, int pre, int vmax) { for(int i = 0; i <= vmax; i ++) // at most k steps, not exactly k steps dp[u][i][0] = dp[u][i][1] = val[u]; for(size_t i = 0; i < graph[u].size(); i ++) { int v = graph[u][i]; if(v == pre) continue; solve_dp(v, u, vmax); for(int j = vmax; j >= 0; j --) { for(int k = 0; k <= j; k ++) { dp[u][j+2][0] = max(dp[u][j][0], dp[u][j-k][0] + dp[v][k][0]); dp[u][j+1][1] = max(dp[u][j][1], dp[u][j-k][0] + dp[v][k][1]); dp[u][j+2][1] = max(dp[u][j][1], dp[u][j-k][1] + dp[v][k][0]); } } }}int main() { freopen("input.txt", "r", stdin); int n, T; while(scanf("%d%d", &n, &T) != EOF) { for(int i = 1; i <= n; i ++) scanf("%d", val+i); for(int i =1; i <= n; i ++) graph[i].clear(); memset(dp, 0, sizeof(dp)); for(int i = 1; i <= n-1; i ++) { int from, to; scanf("%d%d", &from, &to); graph[from].push_back(to); graph[to].push_back(from); } solve_dp(1, -1, T); cout << dp[1][T][1] << endl; } return 0;}

  

转载于:https://www.cnblogs.com/zhouzhuo/p/3651967.html

你可能感兴趣的文章
大型网站技术架构(六)网站的伸缩性架构
查看>>
多表查询
查看>>
理解作用域(引擎,编译器,作用域)
查看>>
获取网页数据的例子
查看>>
struts2的配置文件
查看>>
JSP第5次测试---测试分析
查看>>
tomcat容器
查看>>
同时可以修改时间和日期的datetime_select and 有关时间的转换
查看>>
IOS Orientation, 想怎么转就怎么转~~~
查看>>
Finding Lines
查看>>
服务提供者及门面
查看>>
POJ-1611-The Suspects(并查集)
查看>>
用VC生成 IDispatch 包装类
查看>>
xcode5.1上真机调试报告No architectures to compile for...的解决办法
查看>>
算法导论读书笔记-第十四章-数据结构的扩张
查看>>
HttpClient使用详解
查看>>
char、varchar、nchar、nvarchar的区别
查看>>
锐捷、赛尔认证MentoHUST
查看>>
前后台传值 201...
查看>>
POJ 2133 暴搜
查看>>