程序改变世界,教育改变未来

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

题目大意:有n个点的一棵树,每个点有两个值:w和c。现在要在其中若干点建立消防站,使得每个点到最近的消防站的距离不超过该点的c值,i点建立消防站的费用为w。求最小费用。

分析:本题显然是树型Dp。定义状态为f[i][j]表示i节点最近的消防站为j且子树i均满足条件的最小费用,该费用包含了w[j],即使j不在子树i内。

f[i][j]=∑(min(f[k][j]-w[j],best[k]))+w[j] {k是i的儿子节点,j是离i最近的消防站,且j在子树i外,或j=i。}

其中best[k]表示min(f[k][j]),其中j在树k内。

posted on 2015-06-18 07:57  hefenghhhh  阅读(114)  评论(0编辑  收藏  举报