一道树形DP+贪心题——FramCraft

Posted dzn2004

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一道树形DP+贪心题——FramCraft相关的知识,希望对你有一定的参考价值。

题目大意:

mhy住在一棵有n个点的树的1号结点上,每个结点上都有一个妹子。

mhy从自己家出发,去给每一个妹子都送一台电脑,每个妹子拿到电脑后就会开始安装zhx牌杀毒软件,第i个妹子安装时间为

树上的每条边mhy能且仅能走两次,每次耗费1单位时间。mhy送完所有电脑后会回自己家里然后开始装zhx牌杀毒软件。

卸货和装电脑是不需要时间的。

求所有妹子和mhy都装好zhx牌杀毒软件的最短时间。

分析一下题意:

树上的每条边mhy能且仅能走两次,这个有什么用?

很有用。自己想想!我不说了,模拟模拟就出来了。

然后很容易就能想到树形DP

那么先定义状态:

f[i]表示以i为节点的树的最短时间。

(a[i]代表 i 节点的时间,size[i]代表 i 子树的规模)

假设u节点有儿子x和y,则如果先走 x 的话 u 的时间就为max(f[x]+1,f[y]+2*size[x]+1);同理,先走 y 的话 u 的时间就为max(f[y]+1,f[x]+2*size[y]+1),若先安装x合适,则必有2*size[x]+f[y]+1>2*size[y]+f[x]+1,即f[x]-2*size[y]<f[y]-2*size[x],既然这样,我们排序即可。

f[i]=max(a[i],max(f[y]+1,f[x]+2*size[y]+1));

代码我没有哦!

为啥没有呢!因为这个思路就是错误的!

大家先想想为啥是错的!

错因很简单,仔细看题就出来了!

未完待续

 

以上是关于一道树形DP+贪心题——FramCraft的主要内容,如果未能解决你的问题,请参考以下文章

可恶!学了这么久的LCA,联考的题目却是LCA+树形DP!!!可恶|!!!这几天想学学树形DP吧!先来一道入门题HDU 1520 Anniversary party

P2279 消防局的设立 (树形DP or 贪心)

考试总结

树形dp

树形DP

[noi2011]道路修建 树形dp