Loj#6223 Luogu P4009 汽车加油行驶 分层图最短路

这是本蒟蒻博客的第一篇文章,不规范之处敬请各位大佬指正和谅解orz

Loj#6223+Luogu P4009


前言

本蒟蒻写博客发题解主要是为了加深对题目的理解,并且在枯燥的刷题过程中换换脑子理清思路,毕竟该蒟蒻博客很可能只有我一个人看(或者两个?),不管怎么说,一定会认真对待的。

Pass:声明:本博客参考:

P4009 汽车加油行驶问题(分层图最短路)_Mr.Gzj的博客-优快云博客


一、建模

这道题其实代码和实现难度都很低,关键在于如何建模。

显然看到网络流24题基本上各方神犇都去跑最小费用最大流了,但蒟蒻这里提供另外一个方法——

分层图最短路

既然是求最小边权,我们容易想到是以费用为边权建图。

那么问题来了,如何建图呢?

网格图,那么最基本的就是根据题意描述,向四个放向连边。

但这道题真正难在对汽油的处理。

我们发现,汽油这一状态较为复杂.。

这里就需要引入分层图了。

把图复制若干张,对于每张图表示不同的状态,根据题意对不同的图层进行连边,这就是分层图。

题目中油箱容量为K

——实际上根据题目描述是满油可以走K条网格边,

这里曲解为油箱容量为K,每走一条边消耗一单位的油,方便理解——

所以我们需要建K+1张图,表示油箱含有0-K个单位的油

(也可以表示用了0-K单位的油,实现时微调即可) 

如果要加满油,就向第K层(即油量为K的层)连边,

对于每一步,向下一层(假设是当前第Lay层,则下一层为Lay-1层(下同))连边

二、代码实现

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值