description
給定一棵
n n
個節點的樹,求它的最小覆蓋集個數。
solution
我們考慮同時維護節點的最小覆蓋集和最小覆蓋集個數。我們發現乙個點被覆蓋只有
3' role="presentation" style="position: relative;">3
3種情況:父親被選入集合,自己被選入集合和至少乙個兒子被選入集合。我們寫出 dp
d
p狀態:⎧⎩
⎨⎪⎪f
[u][
i][0
]表示u
的父親被
選入集合
,自己和
任意乙個
兒子不被
選入集合
f[u]
[i][
1]表示
u有至少
乙個兒子
被選入集
合f[u
][i]
[2]表
示u自己
被選入集
合 void update(int &a, int b)
void dfs(int u, int p)
}int main()
dfs(1, 0);
if (f[1][1] < f[1][2]) else
if (f[1][1] > f[1][2]) else
return
0;}
樹形動態規劃
description 有一棵蘋果樹,如果樹枝有分叉,一定是分2叉 就是說沒有只有1個兒子的結點 這棵樹共有n個結點 葉子點或者樹枝分叉點 編號為1 n,樹根編號一定是1。我們用一根樹枝兩端連線的結點的編號來描述一根樹枝的位置。下面是一顆有4個樹枝的樹 2 5 3 4 1現在這顆樹枝條太多了,需要剪...
樹形動態規劃
分類 演算法 2012 07 01 21 53 494人閱讀收藏 舉報tree output input struct演算法 description 有一棵蘋果樹,如果樹枝有分叉,一定是分2叉 就是說沒有只有1個兒子的結點 這棵樹共有n個結點 葉子點或者樹枝分叉點 編號為1 n,樹根編號一定是1。我...
樹形動態規劃
問題可以分解成若干相互聯絡的階段,在每乙個階段都要做出決策,全部過程的決策是乙個決策序列。要使整個活動的總體效果達到最優的問題,稱為多階段決策問題。動態規劃就是解決多階段決策最優化問題的一種思想方法。將所給問題的過程,按時間或空間特徵分解成若干相互聯絡的階段,以便按次序去求每階段的解 各階段開始時的...