poj 3653 bfs上的dp

题比较好,需要比较强的剪枝,

题意: 有一条路,每个点有一个加油站,第i个加油站加油是w[i]每单位的油,没走一个单位的距离花费1个单位的油,现在已知起点和终点,给你一辆车,并且车的载油量有限为c,求从起点到终点的最小花费。

 

开始能想到是状态dp+spfa 但是超时了,写的是100*100*1000*k的方法,这道题需要使你的更新从小的往大的更新,这样才能有效的避免很多重复状态,而且如果更新无序的话,也会使后面的状态提前更新,这样会很浪费时间。

 

为了让更新从小的开始,而且每种状态只更新一次,首先肯定是要让现在花费小的先更新,所以要用优先队列。

然后为了让对于每个节点往其他节点更新不用枚举各个状态如果可以,可以放进队列里面这样也可以省去状态枚举的地方,充分利用了队列。

 

感觉这道题的思路非常好

发布了86 篇原创文章 · 获赞 14 · 访问量 31万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章