poj 3653 bfs上的dp

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

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

 

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

 

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

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

 

感觉这道题的思路非常好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值