1. 程式人生 > >今日份水題2018.11.6

今日份水題2018.11.6

今天真的水

POJ1655 Balancing Act 選擇一個結點,刪去後使得分出的若干棵樹的結點數的最大值最小,呵呵

POJ3107 GodFather 找一個點,以它為根的所有子樹中最大的節點數最小,呵呵

BZOJ1131sta 找一個點,以它為根所有子樹的深度和最大。第一遍dfs搜出來每個點的son[]和dp[],分別表示子樹大小和子樹中所有節點深度之和,第二遍dfs,搜到節點u,此時fa的答案已經求出來了,考慮用fa的答案更新u的答案:dp[u] = dp[u]+(dp[fa]-(dp[u]+son[u]))+n-son[u] = dp[fa]+n-2*son[u],其中,dp[u]在上一輪dfs中已經求出了u的子樹中的深度值和,而dp[u]對dp[fa]的貢獻為dp[u]+son[u],現在用fa的資訊更新u,需要現在父親的答案中減去這部分貢獻,並用父親及以上的節點數更新u。

今天學了下虛樹,明天做一下虛樹的題目。