P3942&P2279&P2899&P2016

wuhupai發表於2024-07-21

樹上最小點覆蓋的題目,如果範圍為1,則貪心,dp都可以,否則只能用貪心(O(n)複雜度),但也有一些dp的影子。

\(f_{i}\)為i的子樹中最遠的沒被覆蓋的點距離i的距離
\(g_{i}\)為i的子樹中最遠的驛站距離i的距離

考慮如何更新

如果\(f_{i}=k\) 那麼i必須設立,不然往上這個點就再也覆蓋不了了,同時將\(g_{i}\)設為0
如果\(f{i}+g{i}<=k\),那麼就是說一棵子樹中的驛站可以覆蓋到另外的子樹,所以\(f{i}=0\)
如果\(g_{i}>k\)所以\(f_{i}=max(f_{i},0)\)
然後轉移就是\(f_{i}=max(f_{to})+1\)
\(g_{i}=max(g_{to})+1\)