随笔分类 -  树形dp

摘要:状态转移方程:dp[u][0] = max(dp[v][0],dp[v][1]);dp[u][1] += dp[v][0];#include #include #include #include #include using namespace std;const int maxn = 6010;vectortree[maxn];int rat[maxn],deg[maxn],dp[maxn][2];int max(int x,int y){ return x > y ? x : y;}void dfs(int u){ if(0 == tree[u].size()) { ... 阅读全文
posted @ 2013-07-29 08:55 一生挚爱 阅读(144) 评论(0) 推荐(0)
摘要:状态压缩动态规划动态规划的状态有时候比较难,不容易表示出来,需要用一些编码技术,把状态压缩的用简单的方式表示出来。典型方式:当需要表示一个集合有哪些元素时,往往利用2进制用一个整数表示。*:一般有个数据 n 0){if(x & 1) num ++;x >>= 1;}return num;}*:然后就是DP部分了,明确好状态转移方程。先特殊处理第1行,然后按状态转移方程求出剩下的值。经典问题:TSP一个n个点的带权的有向图,求一条路径,使得这条路经过每个点恰好一次,并且路径上边的权值和最小(或者最大)。或者求一条具有这样性质的回路,这是经典的TSP问题。n dp[j][1] 阅读全文
posted @ 2012-09-19 09:39 一生挚爱 阅读(168) 评论(0) 推荐(0)