树状DP
码不停Tick
这个作者很懒,什么都没留下…
展开
-
poj2342(summerIv) 树状DP水题
参考:点击打开链接需要特别注意的是这种题目一定要递归找到根节点再从根节点进行dfs,上面的链接中的代码就是因为没有进行这一步所以TLE#include#include#includeusing namespace std;const int maxn=6000+50;int dp[maxn][2],root,father[maxn],vis[maxn];///二维原创 2017-08-08 00:07:05 · 256 阅读 · 0 评论 -
uva12186
这题,细思极恐,这么短的代码就实现了,参考了别人的代码写出来的,感觉比紫书上的代码好懂,看来要好好训练dfs+dp的这种解法。#include#include#include#include#include#include#includeusing namespace std;const int maxn=1e5+50;int n,t,no,ans;double perce原创 2018-01-26 11:24:48 · 424 阅读 · 0 评论 -
UVA1220树上的dp(最大独立集)
这题做的真是心力憔悴,主要还是对dfs的不熟悉吧。主要思路:对于每一个节点,有选择和不选择两种情况。如果是不选择,则它的儿子可以是不选择和选择,取最大值,即 ∑max(d[v][0],d[v][1]);(v为u的子节点);如果选择,则它的儿子不能选择即,∑d[v][0]+1(加1为加上父节点)。然后最后求最大值。不过这题还有一个地方就在于要判断是不是唯一路径。所以 还需要加一个原创 2017-12-05 11:57:59 · 384 阅读 · 0 评论 -
树上的dp总结
这几天做了些树状dp的题目,现在总结i一下。树的最大独立集:这类题目大概是碰到最多的。独立集是指,一个图中的子点集,集合中的点都不相邻。题目一般会描述成给你一个树状关系,然后下属和上司不能同时出现,选出最多的人参加活动。递推式:dp[root][1]=Σdp[son][0],dp[root][0]=Σmax(dp[son][1],dp[son][0])+1(0表示该节点不选,1表示选择),如果节点...原创 2018-01-30 00:12:47 · 449 阅读 · 1 评论