![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树形dp
seez
njfu
展开
-
10. 有依赖的背包问题(树形背包)
10. 有依赖的背包问题 - AcWing题库 限制条件: 选择子结点必须先选择父节点 选择的物品总体积不能超过m 对于所有子树,有两种选择,选或者不选,使用dfs的话,最坏情况是O(2^100),所以我们选择dp,以不同的体积作为集合的划分依据,只留下每个集合的最大值,这样子就可以合理的优化 所以我们可以得出,在选择一个结点之前,必须先选择他的父结点,才能对他做01背包 状态表示:对以u为根结点的树选择,并且体积不超过j的所有方案 状态计算:根据最后一个不同点来进行状态划分 选了u...原创 2022-02-02 11:15:52 · 1270 阅读 · 0 评论 -
285. 没有上司的舞会(树形dp)
#include <iostream> #include <algorithm> #include <cstring> using namespace std; const int N=6005; int dp[N][2]; int a[N]; int ne[N],e[N],h[N],idx; bool st[N]; void add(int a,int b) { e[idx]=b; ne[idx]=h[a]; h[a]=idx++; ...原创 2022-02-01 21:03:39 · 183 阅读 · 0 评论