樹形dp - Codeforces Round #322 (Div. 2) F Zublicanes and Mumocrates

weixin_34319999發表於2015-10-03

 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)

 

view code

 

相關文章