您的位置:首页 > 其它

8.4晚做题感悟

2017-08-04 22:31 218 查看
第一次写这种博客,可能写得不好,请见谅

最近想做做一些树上的问题,今天找了一个环套树的题骑士(ZJOI2008)

题意

有n(n<=10^6)个人,每个人都有自己的战斗力和他最讨厌的人

要求选出若干人,在任意两人都没有出现讨厌的情况下,战斗力的和最大

可能为一个环套森林

分析

我们可以使用树形dp

如果树上没有环呢?

f[i][0]+=max(f[k][0],f[k][1]);f[i][1]+=f[k][0];
k为i的儿子

我们先考虑单个的环套树(因为最后的环套森林的最优解即为各个环套树最优解的和)

先用dfs求出环的部分,只需要求出环上的两点即可

然后断边,用树形dp求解

代码

代码到底放不放我也不清楚,看看评论再说吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: