Compressed Tree

首先官方题解写的挺好的,可以看

为什么需要在DP状态中定义\(i\)及其父亲的这条边也在呢?你可以试试不定义,那么你会发现是推不走的,因为比如我们现在正在推\(i\),那么他的一个儿子\(u\)的DP值都知道了,但是由于有了\((u,i)\)这一条边,我们就把\(u\)的度数改变了,这个时候\(u\)的DP值就不在适用了

综上,其实我们也可以这么定义:\(f[i][0/1/2/3]\)表示以\(i\)为根的子树,\(i\)选了\(0/1/2/3\)个子节点(其中\(3\)代表\(3\)个子节点及以上)的最优值,状态转移方程见CF代码

update 2024.6.30

这道题目可以用树形DP的本质还是在压缩过程中,任何一个不被删掉的点的度数不被改变,且树最终形态与压缩点的顺序无关,所以在选子树的时候,不妨先压缩子树,然后由于根节点的度数不变,所以可以按照根节点选择的子节点个数去判断是否删除根节点

所以以后告诉顺序无关了,可能是在告诉无后效性,可以往树形DP想

posted @ 2024-03-08 19:25  最爱丁珰  阅读(2)  评论(0编辑  收藏  举报