今日份水题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。

今天学了下虚树,明天做一下虚树的题目。

猜你喜欢

转载自www.cnblogs.com/hzs2000/p/9919782.html