随笔分类 -  SF-最短路

最短路,Dijkstra,Floyd,SPFA等
摘要:题目链接 思路 以后再也不用 \(Floyd\) 了,堆优化 \(Dijkstra\) 首选。 预处理最短路,\(k\) 个点枚举即可。 代码 #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #i 阅读全文
posted @ 2020-10-29 22:30 tuscjaf 阅读(83) 评论(0) 推荐(0)
摘要:题目链接 思路 这道题乍一看像是最短路,但又不知道从何下手。 考虑枚举每个节点,假设两个人到第 \(i\) 个节点相遇,剩下的路程一块走,那么我们很容易得出当前的能量为 \(dis_{1~to~i} \times B + dis_{2~to~i} \times E + dis_{i~to~n} * 阅读全文
posted @ 2020-10-26 22:13 tuscjaf 阅读(61) 评论(0) 推荐(0)
摘要:题目链接 思路 最短路模板题,我们把第一个到达的点的边权设置成 $0$ ,其他为 $1$ 即可,跑一边最短路即可。 代码 #include <cstdio> #include <cstring> #include <algorithm> #include <queue> #include <util 阅读全文
posted @ 2020-10-24 09:33 tuscjaf 阅读(50) 评论(0) 推荐(0)
摘要:题目链接 思路 第一联想到最短路解决血量剩余最多的路径,但是这道题有一个条件,必须使路径上的最大的点最小。 那么我们可以把点权从小到大排序,然后二分查找最小的能到达奥格瑞玛的路径。 也就是说,我们设置当前二分到的点权为该条路上最大的点权,那么进行最短路的时候,我们需要判断通向的点是否小于当前二分到的 阅读全文
posted @ 2020-10-24 09:11 tuscjaf 阅读(156) 评论(0) 推荐(0)
摘要:题目链接 思路 由题目 $2k$ 我们很容易联想到倍增,此时我们可以倍增$+Floyd$,解决该问题。 首先我们设 \(g[i][j]\) 表示 \(i\) 和 \(j\) 之间的路程,显然,如果 \(g[i][j]\) 和 \(g[j][k]\) 同时为 $1$ 我们就可以将 \(g[i][k]\ 阅读全文
posted @ 2020-10-18 17:47 tuscjaf 阅读(81) 评论(0) 推荐(0)