![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最短路
最短路问题
半碗无糖蓝莓冻
这个作者很懒,什么都没留下…
展开
-
STDOJ pyf会魔法(dp / 分层图 + 堆优化dijkstra最短路)
题目 思路 dpdpdp :dp[i][j]dp[i][j]dp[i][j]表示从 111 走到 iii 用了 jjj 次魔法的最小值;然后用堆优化的 dijkstradijkstradijkstra,每次取队头判断即可,具体的判断条件看代码; 分层图:我们可以对其建立一个 (k+1)(k + 1)(k+1) 层的新图来进行求解,原图层代表使用了 000 次的魔法,其他的图分别表示使用了 111 次、222 次 ...k...k...k 次的魔法,然后就可以连边了(如图所示); AC代码 dp #in原创 2021-09-09 23:10:25 · 181 阅读 · 0 评论 -
STDOJ 真简单题 & Codeforces Round #605 (Div. 3) E. Nearest Opposite Parity(反向建图 + 最短路)
链接 E. Nearest Opposite Parity 题目 思路 正向建图,每个点跑一遍 bfsbfsbfs 会超时; 反向建图,然后找到一次就可以满足题意的点作为起始点,然后由起始点继续拓展即可; AC代码 #include <iostream> #include <cmath> #include <algorithm> #include <cstring> #include <map> #include <vector> #原创 2021-08-23 17:45:41 · 84 阅读 · 0 评论 -
POJ - 1556 The Doors(计算几何 + 最短路)
链接 The Doors 题意 从 (0,5)(0,5)(0,5) 位置走到 (10,5)(10,5)(10,5),有 nnn 个垂直于 xxx 轴的墙壁,每个墙壁都会有两个门洞。下面的图片显示出了一个墙体及最短路径。 思路 首先我们把每两个点连一条边,判断边是否和墙体相交,如果不相交就连边,相交就不连; 最后跑一遍 dijkstradijkstradijkstra 最短路就可以; AC代码 #include <iostream> #include <vector> #includ原创 2021-08-02 22:45:59 · 147 阅读 · 0 评论 -
POJ-2253Frogger(最短路变形)
传送门 题意: 湖中有n块石头,编号从1到n,有两只青蛙,Bob在1号石头上,Alice在2号石头上,Bob想去看望Alice,但由于水很脏,他想避免游泳,于是跳着去找她。但是Alice的石头超出了他的跳跃范围。因此,Bob使用其他石头作为中间站,通过一系列的小跳跃到达她。两块石头之间的青蛙距离被定义为两块石头之间所有可能路径上的最小必要跳跃距离,某条路径的必要跳跃距离即这条路径中单次跳跃的最远跳跃距离。你的工作是计算Alice和Bob石头之间的青蛙距离。 思路: 最短路求局部最大和整体最小,即局部最大是单原创 2021-04-25 12:12:07 · 63 阅读 · 0 评论 -
洛谷多校训练第1轮 A. À la Volonté du Peuple(最短路)
题意: 给一个有权重的无向图,有自环,有重边; 从编号1开始点火,沿着边蔓延; 当两股或以上的火在一个地方相遇会发生爆炸; 问会爆炸几次; 思路: 爆炸有两种情况: 在点上爆炸,即这个点至少存在两个点是它最短路的前驱,这些点到这个点都是最短路,即会爆炸; 在边上爆炸,这条边不在最短路里面则会爆炸; 代码: #include <iostream> #include <cstring> #include <cmath> #include <cstdio> #inc原创 2021-04-26 15:52:27 · 97 阅读 · 0 评论