Grass Planting 题解

G r a s s Grass P l a n t i n g Planting 题解

题目

T1(1)
T1(2)

解题方法

方法 1 1 :树形 d p dp

d p i dp_i 表示以 i i 为根的子树需要使用的最少的草的种类数, f i f_i 表示 i i 节点的儿子个数, b i b_i 表示与 i i 结点相连的结点数量。
除了根节点以外的其他结点都与 b i b_i 个结点相连,而有一个结点恰好是它的父亲结点。但是由于根结点没有父亲结点,因此
f i = { b i 1 i > 1 b i i = 1 f_i=\begin{cases} b_i-1&i>1\\ b_i&i=1 \end{cases}
注:这里我们假定 1 1 是整棵树的根。
那么可以得到
d p i = max j s o n i ( d p j , f i + 1 , f j + 2 ) dp_i=\max_{j\in son_i}{(dp_j,f_i+1,f_j+2)}
注: s o n i son_i 表示 i i 的儿子。
上面式子的 d p j dp_j 表示以 j j 为根的子树需要使用的最少的草的种类数, f i + 1 f_i+1 表示 i i 的儿子的数量再加上 i i 这个结点, f j + 2 f_j+2 表示 j j 的儿子的数量再加上 i i j j 两个结点。
那么答案就是 d p 1 dp_1
时间复杂度为 O ( n ) O(n)

方法 2 2 :数学

b i b_i 表示与 i i 结点相连的结点数量。
我们可以发现,答案就是 max i = 1 n b i + 1 \max_{i=1}^{n}{b_i}+1
时间复杂度为 O ( n ) O(n)