
树形dp
largecub233
这个作者很懒,什么都没留下…
展开
-
树形背包模版-洛谷P1273 有线电视网
https://www.luogu.org/problem/show?pid=1273 其实就是一个背包嘛,每个终端都是一个物品,体积全是1; 网上的题解很多,我copy一段 http://blog.youkuaiyun.com/qwsin/article/details/50954669 dp[i][j]表示i节点在其后代中选了j个的最大收入 dp[i][j]=max(dp[i][j],dp[i]原创 2017-02-19 18:17:25 · 575 阅读 · 0 评论 -
树形dp-洛谷 P2014 选课
https://www.luogu.org/problem/show?pid=2014 我一开始想不出来,看了题解后却发现是最基本的模型 唉~ 这里因为是森林所以我们简单的把森林合并到一个节点0; f[i][j]表示再i点的子孙里取j个的解; 当然不包括i;#include<iostream>#include<cstdio>#include<cstring>#include<algo原创 2017-02-19 20:54:40 · 579 阅读 · 0 评论 -
树形dp 没有上司的舞会
这题很简单,而且题面描述也很清楚,我就不放样例了。 设f[i][2]表示第i个点选(1)或不选(0),以i为根的这棵子树能选的最大价值。易得转移方程为: f[i][0]=∑(max(f[s][0],f[s][1])) f[i][1]=∑(f[s][0])+w[i] ————————————————by zlx 显然啦要用dfs去更新; 就是在dp前先dfs算出其儿子的值; 最简单的树形原创 2017-02-17 10:39:01 · 345 阅读 · 0 评论 -
树形dp-洛谷 P3047 [USACO12FEB]附近的牛Nearby Cows
https://www.luogu.org/problem/show?pid=3047 我们弄一个f[i][j]表示第i个点向下走j步可以到达的位置的值的和; 这个用dfs就好了; 然后在搞 f[i][j]表示第i点向下走0~j步…. 这个前缀和搞搞那就好了 然后不就好算答案了嘛,容斥一下就好了#include<iostream>#include<cstdio>#include<cs原创 2017-02-20 09:23:43 · 475 阅读 · 0 评论 -
树形dp-P1270 “访问”美术馆P3360 偷天换日
https://www.luogu.org/problem/show?pid=1270 这题好像就是来考建图吧 比如样例嘛,把他搞成这样子 *2是因为要走过去再再走回来 5就是一幅画; 然后直接dp就好啦; 建议先做p1273#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#inclu原创 2017-02-20 11:28:16 · 476 阅读 · 0 评论 -
树形dp——洛谷 P2986 [USACO10MAR]伟大的奶牛聚集Great Cow Gat…
https://www.luogu.org/problem/show?pid=2986 就是树形dp; 主要思路就是我们算出假如全到第一个点的情况的答案; 那么我们再通过第一个点再往下移动,移动一个算一个; 就好啦#include<bits/stdc++.h>#define Ll long longusing namespace std;const Ll N=1e5+5;struct原创 2017-06-15 19:14:59 · 486 阅读 · 0 评论