树形dp
seez
njfu
展开
-
10. 有依赖的背包问题(树形背包)
10. 有依赖的背包问题 - AcWing题库限制条件:选择子结点必须先选择父节点 选择的物品总体积不能超过m对于所有子树,有两种选择,选或者不选,使用dfs的话,最坏情况是O(2^100),所以我们选择dp,以不同的体积作为集合的划分依据,只留下每个集合的最大值,这样子就可以合理的优化所以我们可以得出,在选择一个结点之前,必须先选择他的父结点,才能对他做01背包状态表示:对以u为根结点的树选择,并且体积不超过j的所有方案状态计算:根据最后一个不同点来进行状态划分选了u...原创 2022-02-02 11:15:52 · 1259 阅读 · 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 · 175 阅读 · 0 评论