首页 > 其他 > 详细

bzoj3205

时间:2015-05-09 17:25:57      阅读:213      评论:0      收藏:0      [点我收藏+]

和bzoj2595类似,也是斯坦纳树

设f[l,r,]表示在点i机器人组合成了l-r最少推的次数,然后可得

f[l,r,i]=min(f[l,m,i]+f[m+1,r,i])

f[l,r,i]=min(f[l,r,j]+1) 点j能推到i

但是这样做肯定会TLE,考虑两个优化

首先,一开始其实有很多根本用不到,我们可以先从机器人初始位置搜下去,找到所有可以访问的点做dp即可

其次,观察第二个方程,它的边权都是1,我们一定要用spfa转移吗?不,我们可以用直接宽搜

具体的我们维护两个队列,第一个队列是初始的按从小到大排,新加入的点放在第二个队列,每次取两个队头小的那一个

但我还是tle,求神犇指教

bzoj3205

原文:http://www.cnblogs.com/phile/p/4490647.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!