樹形dp - Codeforces Round #322 (Div. 2) F Zublicanes and Mumocrates
Zublicanes and Mumocrates
Problem's Link
Mean:
給定一個無向圖,需要把這個圖分成兩部分,使得兩部分中邊數為1的結點數量相等,最少需要去掉多少條邊.
analyse:
樹形dp.
dp[cur][i][j]:當cur為i集合的時候 有j個和i同集合的方案
狀態轉移方程為:
dp[cur][i][j+k] = min{dp[to][i^1][j=(葉子個數-d)]+dp[cur][i][k]+1,dp[to][i][j]+dp[cur][i][k]}
cnt為葉子節點的個數.
最後答案是:min{ dp[root][0][cnt/2] ,dp[root][1][cnt/2]}
Time complexity: O(N)
相關文章
- Codeforces Round #358 (Div. 2) D dp
- Codeforces Round #316 (Div. 2) E dp
- Codeforces Round #321 (Div. 2) D 狀壓dp
- Codeforces Round #336 (Div. 2) D 區間dp
- Codeforces Round #336 (Div. 2) C 二分+dp
- Codeforces Round #214 (Div. 2)(揹包變形)
- Codeforces Round #360 (Div. 2) E dp 類似01揹包
- Codeforces Round #639 (Div. 2)
- Codeforces Round #541 (Div. 2)
- Codeforces Round #682 (Div. 2)
- Codeforces Round #678 (Div. 2)
- Codeforces Round #747 (Div. 2)
- Codeforces Round #673 (Div. 2)
- Codeforces Round #672 (Div. 2)
- Codeforces Round #448 (Div. 2) A
- Codeforces Round #217 (Div. 2)
- Codeforces Round #256 (Div. 2)
- Codeforces Round #259 (Div. 2)
- Codeforces Round #257 (Div. 2)
- Codeforces Round #258 (Div. 2)
- Codeforces Round #171 (Div. 2)
- Codeforces Round #173 (Div. 2)
- Codeforces Round 932 (Div. 2)
- Codeforces Round 934 (Div. 2)
- Codeforces Round 940 (Div. 2)
- Codeforces Round #448 (Div. 2)B
- Codeforces Round #227 (Div. 2)
- Codeforces Round #215 (Div. 2)
- Codeforces Round #221 (Div. 2)
- Codeforces Round #219 (Div. 2)
- Codeforces Round #453 (Div. 2) C
- Codeforces Round #450 (Div. 2) B
- Codeforces Round #452 (Div. 2) C
- Codeforces Round #452 (Div. 2) D
- Codeforces Round #268 (Div. 2)
- Codeforces Round #260 (Div. 2)
- Codeforces Round #158 (Div. 2)
- Codeforces Round #181 (Div. 2)