码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-04-07 12:21:13      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:开始   就是   贪心   需要   ram   定义   树形dp   有一个   代码   

题目大意:

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

标签:开始   就是   贪心   需要   ram   定义   树形dp   有一个   代码   

原文地址:https://www.cnblogs.com/DZN2004/p/12652571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!