题解【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

posted @ 2021-07-05 10:36  bear_xin  阅读(22)  评论(0)    收藏  举报