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想