随笔分类 - 最短路径
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4070 [算法] 考虑将每个"Doge"向其所能到达的楼连边 直接SPFA求单源最短路可以获得57分 那么 , 怎样拿到满分呢? 我们发现这张图的边的数量达到了NM的数量级 考虑分块 ,
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2750 [算法] 考虑计算每个点对每条边的贡献 对于每个点首先运行SPFA或Dijkstra单源最短路 , 建出以该点为根的最短路树(图) 由于最短路图是一个DAG(有向无环图) , 我
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=5415 [算法] 对于v到1的1条合法路径 , 我们将其分为两段考虑 1. v -> u , 该路径上的最短边长大于等于P 2. u -> 1 显然 , 我们要求所有这样的路径中dist
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3073 [算法] 考虑线段树优化建图 建立两棵线段树 , 一棵为入树 , 一棵为出树 ,连边时 , 我们只需建立超级点S , 将区间[A , B]与点S连边 , 点S与区间[C , D]
阅读全文
摘要:[题目链接] https://codeforces.com/contest/787/problem/D [算法] 线段树优化建边 , 然后用Dijkstra算法求单源最短路 时间复杂度 : O((N + M)logN) [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1266 [算法] 首先 , 用Dijkstra求单源最短路 然后 , 建出这张图G的最短路图G’ , 答案即为G'的最小割 最大流最小割定理 : 最小割 = 最大流 直接求最大流即可 时
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3436 [算法] 不难发现 , 题目中的约束条件都可以写成 1. Da - Db >= c 2. Da - Db <= c 3. Da = Db 考虑使用差分约束系统 第一种约束条件 :
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1715 [算法] 用SPFA判定负环是否存在即可 时间复杂度 : O(N ^ 2) [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2118 [算法] 首先找出Min{Ai} 对于0 - Min{Ai} - 1分别建一个点 , 分别表示一个同余类 若(i + Aj) % Min{Ai} = k , 则i向k连一条权值为
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1179 [算法] 首先 , 将这张图缩点 , 然后 , SPFA最长路即可 时间复杂度 : O(KN) [代码]
阅读全文
摘要:[题目链接] https://www.luogu.org/problemnew/show/P2966 [算法] SPFA最短路 时间复杂度 : O(N ^ 2) [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1880 [算法] 最短路 + 动态规划 时间复杂度 : O(NlogN) [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4093 [算法] 对于k个枢纽 , 分别在正向图和反向图上跑dijkstra最短路 , 即可 时间复杂度 : O(K(N + M) log N) [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=5140 [算法] 最短路 时间复杂度 : O(N^2) [代码]
阅读全文
摘要:[题目链接] https://codeforces.com/contest/545/problem/E [算法] 首先求 u 到所有结点的最短路 记录每个节点最短路径上的最后一条边 答案即为以u为根的一棵最短路径生成树 时间复杂度 : O(NlogN) [代码]
阅读全文
摘要:[题目链接] https://codeforces.com/contest/507/problem/E [算法] 首先BFS求出1到其余点的最短路 , N到其余点的最短路,记为distA[]和distB[] 显然 , 我们只需最大化求出的最短路上没有被破坏的边即可 , 不妨用f[i]表示现在在城市i
阅读全文
摘要:[题目链接] https://codeforces.com/contest/666/problem/B [算法] 首先 , 用BFS求出任意两点的最短路径 然后 , 我们用f[i][0-2]表示从i出发到达的最远三点 , g[i][0-2]表示到i距离最远的三个点 枚举b和c , 然后在枚举3 *
阅读全文
摘要:[题目链接] https://codeforces.com/contest/449/problem/B [算法] 最短路 时间复杂度 : O(N ^ 2) [代码]
阅读全文
摘要:[题目链接] https://codeforces.com/contest/986/problem/A [算法] 用dist(i,j)表示第i种食物运到第j个城市需要的最小代价 将所有特产为第i中食物的城市加入队列 , 进行广度优先搜索BFS 显然 , 对于每个城市 , 答案为到该城市代价前s小的食
阅读全文
摘要:[题目链接] https://codeforces.com/contest/1051/problem/F [算法] 注意边数 - 点数 <= 20 , 我们不妨首先求出图的任意一棵生成树 , 不在生成树内的边最多有21条 , 这些边不同的端点最多有42个 对这些点分别运行Dijkstra最短路 回答
阅读全文

浙公网安备 33010602011771号