树形背包小结

树形背包是背包中的一类问题,俗称有依赖的背包问题

我将树形背包总结为以下几类:

一种状态组内转移

选课:https://www.luogu.com.cn/problem/P2014
有线电视网:https://www.luogu.com.cn/problem/P1273
二叉苹果树:https://www.luogu.com.cn/record/53691692
访问美术馆:https://www.luogu.com.cn/problem/P1270
树上染色:https://www.luogu.com.cn/problem/P3177

我们按 \(dfs\) 的顺序从深到浅处理,处理到当前节点是,所有儿子的子答案都已经处理完毕,那么就相当于在当前节点对所有儿子做分组背包(详见背包九讲)。
刚开始先不考虑根节点,做完分组背包以后,再根据根节点是不是必须要选,进行相应的处理

多种状态组内和组间转移

潜入行动:https://www.luogu.com.cn/problem/P4516
icpc20南京M题

组间转移,在分组背包的时候会更新到当前层的状态,所以每次要开一个辅助数组记录前一层的状态,防止重复转移

posted @ 2021-07-21 11:51  Tartarus_li  阅读(44)  评论(0编辑  收藏  举报