Dijkstra板子题

简单

热浪

传送门
题意:带权无向图,n 个点 m 条边,求两点间距离,数据不会爆int
做法:dijkstra跑一边即可

信使

传送门
题意:求起始点到其他点最短距离中的最长距离,无法到达的不算
做法:dijkstra跑后求max

香甜的黄油

传送门
题意:求一个点到其他点的距离和最短
做法:数据量小,对每一个点跑dijkstra求和取min

最小花费

传送门
题意:两人转账会扣除一定比例的手续费,问终点想要得到100元钱需要起点拿出多少钱
做法:给起点赋值100元,每走到下一个点都要减去需要收取的手续费,求最大路,可以求出起点100元时终点的金额,所以答案是 100 * 100 / ans

选择最佳线路

传送门
题意:给定一张图,已知终点和 k 个起点,找一个路径长度最短的起点
做法:建反图dijkstra跑一边即可

中等

昂贵的聘礼

传送门
题意:给定 n 个物品,每个物品都有自己的价值,部分物品之间可以通过花额外的钱来交换,例如:i 号物品价值为 x,j 号物品价值为 y,想要获得 i 可以花费 x 元或者用 j 号物品 + z 元去换。除此之外,每个物品都有自己的等级,只有等级不超过一定范围的物品才可互相交换,间接或直接与范围外等级的物品交换都不行,问想要获得第1号物品所需要花费的最小金额
做法:难度在于建图,设起始点为 0,0点不是任何物品,且与其他所有点都有一条边,边权为每个点的价值,当 i 与 j 有交易关系时应该建一条 j 到 i 的边,边权为 z,然后暴力枚举等级范围从 0 点开始跑dijkstra,取min。

观光

传送门
题意:给定图,求最短路的方案数 + 最短路长度-1的方案数
做法:相当于求一条最短路和次短路,只有次短路长度 == 最短路 - 1 时才能将次短路方案加到答案里。dist数组第二维中 0 代表最短路,1 代表次短路。分为以下几种情况。
1、当前最短路可更新,那么次短路更新为当前最短路,然后最短路更新
2、最短路不可更新,次短路可更新,更新次短路即可

G - Easy Glide

传送门
题意:在二维坐标系上,已知起点和终点坐标,以及 n 个加油站,汽车经过每个加油站会加速 3 秒,已知正常速度 v1 和 加速速度 v2,问起点到终点的最短时间( n <= 1000)
做法:n 只有 1000,那么可以构建一个完全图,共 n + 2 个点,点 n + 1 为起点,点 n + 2 为终点,两点之间的权值是从一点到另一点的时间,起点到其他点速度始终为 n1,其余 n + 1 个点之间的路径长度需要考虑加速速度,建出图后跑朴素 dijkstra 即可

较难

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值