动态规划-树形DP
tzb592825420
这个作者很懒,什么都没留下…
展开
-
codeforces486 D. Valid Sets 树形dp
题意:一棵树有n个节点,每个节点有一个权值,要求出有多少这样的节点的集合s,满足条件1.非空,2.连通,3.权值最大减权值最小 分析:先考虑d为无穷大,这样任何集合满足前两个条件即可,dp[r]表示以r为根的子树包括r节点和其他一些节点构成集合的个数,dp[r]=(dp[son1]+1)*(dp[son2]+1)*...;最后全加起来即可。再考虑一般情况,如何转化为以上所述特殊情况呢?按权值w从原创 2015-01-30 15:09:16 · 447 阅读 · 0 评论 -
uva 10859 Placing Lampposts 树形dp
点击打开链接 图可能不连通,有多棵树。原创 2015-01-02 22:19:07 · 422 阅读 · 0 评论 -
hdu5148 树形dp,分组背包
dp[i][j]表示以i为根节点的子树中选j个城市贡献边长的最小值,怎样由子树向上递推呢,子树是一个天然的组,dp[u][j]可以这样理解,u子树容量为j是由上一层dp[u][j-f]推出的,应用了滚动数组。 #include #include #include #include #include #include #include #include #include #include #def原创 2015-05-18 17:45:24 · 548 阅读 · 0 评论 -
hdu5379 Mahjong tree 树形DP
题目本身并不难,就是解决起来有些繁琐。 首先一个节点的非叶子节点若大于2则不存在,答案为0。否则讨论非叶子结点的数目0||1||2,同时也要考虑有没有叶子节点。 有些子树的根节点可以选首尾,有些已经确定了,用flag来标识。 #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #原创 2015-08-11 22:28:01 · 344 阅读 · 0 评论 -
hdu5103 RootedTree 状压dp,树形dp
这题说的是给了n(14)个点,每个点都以他 为根的最大可容的孩子个数和最小的可溶孩子个数L[i] ,R[i] 问这n个点形成一棵树有多少种形态 我们让 dp[i][S] 表示 一 i为根节点 的 拥有孩子S(二进制数)状态的 方案数 , sub[S] , 表示 以 S 状态表示的 森林的 方案数, sum[S] 表示 一S 状态的 有根树 的 方案数 可以知道 dp[i]原创 2015-08-18 23:34:20 · 1053 阅读 · 0 评论