CF 384 Div2 D题

给出一棵树,问两棵不相交的子树的权和最大。

其实很简单,我没必要搞复杂。用普通的dfs,记录一个当前最大子树和t,然后每访问一棵新的树,把当前这棵子树的和加上t来更新答案,当访问完这棵子树的时候再用和来更新s,这样做的正确性在于任意两棵不相交的子树,他们肯定有一个先后的dfs序,那么这样的话先dfs的就已经被记录在s中,后dfs的就可以结合s来更新答案了,这样的话就保证所有可行解都已经被更新,即充分性已证。

下面证可行性,如果两棵子树相交,那么它们肯定是谁是谁的祖先,那么肯定祖先先dfs,然后dfs到儿子的时候,因为祖先没有更新s,所以所更新的答案不包括这个组合,可行性已证。

综上所述,这个做法是正确的,也是比较简洁的,做题目要尽可能简单地完成,思维难度大的一般程序量都小,所以一定要加大思维训练强度。

posted @ 2016-12-20 09:41  fjhok  阅读(97)  评论(0编辑  收藏  举报