题解【P1272 重建道路】
题解链接
P1 题目描述
一棵树,找出他的一棵子树,满足减去k个枝条,使得留下的部分只有p个结点
P2 新学知识
定义状态时可以根据题目的问题直接定义,不失为一种好方法
要合理地找到种情况所属的递归定义,有时候你只是没认出来他们(p4-q1)
!:这道题起点居然是只有他一个点,好奇怪(这里需要比较一下其它的题),当然这道题的dp[i][j]表示的是以i结点为根的子树和他的父亲结点连着,并且有j个点被选入的时候.
状态转移方程-1是因为一个父亲节点和他的子树连结的时候,他本来考虑的是把i这个结点从父亲结点上除去的情况,所以就应该把他填上
P3 用到的模板
P4 题目思路
Q:对于用例这种请款,已经不是从一个点的子树分出去一部分为答案了,而是把树从中间剪开了
A:其实这就是分出了一个点的子树,只不过这个点是根节点....所以依旧复合递归定义
定好dp[i][j]为以i为根的子树,保留j个节点拆掉的最小边数
j是volume,dp是value,第k个子结点是层数,又要用到压缩优化了
ops!做出来了
P5 代码解析
P6 奇怪的感悟们
树的根节点、叶子节点往往是递归的特殊结点需要特殊对待
状态转移方程真的很奇妙,因为状态真的将很多很多的内容很简单的表示了出来
over