题目大意:有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内。
时间: 2024-10-12 17:25:43