随笔分类 -  动态规划之树形dp

摘要:题意:有向树,要求找最小的需要修改边的方向的数目,使得该点能到达树上每一个点,并求出所有最小数目的点 解法:树形dp,先从1开始dfs一遍(dp【u】是以u为根 的子树需要修改的边数)转移方程如果是u->x,dp【x】+=dp【u】+1,否则dp【x】+=dp【u】,再把dp【i】的意义改成以u为根 阅读全文
posted @ 2017-11-04 17:24 walfy 阅读(185) 评论(0) 推荐(0)
摘要:树形dp裸题,不过输入是真的恶心,要字符串读入考虑数字大于等于10的情况 dp[i][j]表示i的子树在j状态的最小的边集覆盖,j为0表示不选当前结点,1表示选 转移方程(u->x是u的所有子节点)dp[u][0]+=dp[x][1],dp[u][1]+=min(dp[x][0],dp[x][1]) 阅读全文
posted @ 2017-11-03 23:52 walfy 阅读(190) 评论(0) 推荐(0)
摘要:有一棵树,找每个节点所能到达的最远距离是多少 dis[u][0]正向最大距离 dis[u][1]正向次大距离 dis[u][2]反向最大距离 先一边dfs求出每个节点的正向最大距离(就是向下)和次向最大距离,以及longest记录下当前节点的正向最大距离路径的子节点(为了第二遍dfs,判断这一条路是 阅读全文
posted @ 2017-07-15 11:22 walfy 阅读(162) 评论(0) 推荐(0)
摘要:判断最大的欢喜值,如果上司来了,直系下属就不来 如果子节点j不来那么dp[i][1]+=dp[j][0];如果子节点j来那么dp[i][0]+=max(dp[j][0],dp[j][1]);//因为j不来i也可以不来 递归的求子节点值 #include<map> #include<set> #inc 阅读全文
posted @ 2017-07-13 19:01 walfy 阅读(116) 评论(0) 推荐(0)