标题:[求助]pku 2152 fire 的算法
只看楼主
wangfangbob
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-6-11
 问题点数:0 回复次数:0 
[求助]pku 2152 fire 的算法
原题:http://acm.pku.edu.cn/JudgeOnline/problem?id=2152
我做这个题总是超时,不知道是不是思路有问题
思路如下:
用动态规划:f(i,j)表示在j点已经有防火站并且是距离i点最近的防火站
的情况下,在以i点为根的子树内建防火站来覆盖这颗子树所花的最少费用。
递推过程:计算f(i,j),通过计算每个子树的值h(s)(s为i的儿子),然后相加。
计算h(s):如果j在子树s里,那h(s)等于f(s,j)。
如果不在,设a是s的儿子,遍历满足d(a,i)>= d(i,j)的a,取f(s,a)+ w(a)的最小值,然后再和f(s,j)取最小值,即为h(s)。
然后f(i,j)就是所有h(s)的和。这个做出来是O(n^3).
不知道那位大侠有好的优化办法,或者更好的思路。
搜索更多相关主题的帖子: pku fire 算法 acm 
2007-06-11 16:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-146576-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.537233 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved