「清华集训 2017」榕树之心(换根dp)
设\(f_i\)表示\(i\)子树最少扩展多少次,\(siz_i\)表示子树大小。
那么有
\(f_u=siz[u] \mod 2(siz[u]-siz[v]-1\ge f[v])\)
否则\(f_u=siz[v]+1-(siz[u]-siz[v]-1)\)
其中\(v\)是\(u\)的重儿子。
第一个式子是因为,考虑重儿子可以被抵消掉,所以一定存在方案配对到剩余\(<2\)
第二个式子是,其他子树全部抵消掉重儿子。
我们判断是否能停在\(x\)上,可以把\([1,x]\)的链缩成一个点。
换根\(dp\)即可。