图论 - 最短路算法
文章平均质量分 91
最短路
繁凡さん
只想当个小透明,就图一乐^q^,希望可以做出一些微小的贡献(目前研究方向:自然语言处理、深度学习中的对抗攻击、元学习,欢迎大佬们来与我交流^0^)
展开
-
最短路模板合集
最短路模板合集原创 2020-06-03 10:41:52 · 1612 阅读 · 0 评论 -
【算法笔记】一步一步推出来的同余最短路优化思路(千字长文,超详细)
同余最短路同余最短路实际上使用最短路模型来优化DP问题,使用同余模型来优化极大的数据范围。基本思想:通过同余构造某些状态,状态之间的关系类似于两点之间的带权有向边。通常是解决给定m个整数,求这m个整数能拼凑出多少的其他整数(这m个整数可以重复取)或给定m个整数,求这m个整数不能拼凑出的最小(最大)的整数。我们首先考虑一个问题:给你一个数M,三个数x,y,z,问111 ~ MMM间一共多少个数可以由111开始,通过 +x,+y,+z,归零(变成1)+x,+y,+z,归零(变成1)+x,+y,原创 2020-11-07 17:47:10 · 854 阅读 · 0 评论 -
BZOJ 2156 「国家集训队」星际探索(最短路)【BZOJ计划】
【BZOJ修复计划 #19】BZOJ 2156 星际探索【国家集训队2011】原创 2021-09-22 17:29:15 · 517 阅读 · 0 评论 -
BZOJ 2143 飞飞侠(线段树优化建边 / 并查集优化最短路)【BZOJ修复工程】
【BZOJ修复计划 #12】BZOJ 2143 飞飞侠 【国家集训队2011】原创 2021-09-13 18:30:43 · 403 阅读 · 1 评论 -
CF510D Fox And Jumping(动态规划转换为最短路,O(n^2×2^9) -> O(nlogn),裴蜀定理应用)
根据裴蜀定理得到思路,通过推导将暴力的动态规划转换为更加优秀的最短路问题,O(n^2×2^9) -> O(nlogn)妙啊,妙啊 ~以下内容摘自 我的博客:算法竞赛中的数论问题 - 数论全家桶(信奥 / 数竞 / ACM)作者孟繁宇,四万字,十三万字符的竞赛数论完全总结,将会择机发布,敬请期待 ~原创 2021-01-30 23:58:35 · 396 阅读 · 0 评论 -
CF786B Legacy(线段树优化建边模板 + 最短路)
线段树优化建边给你一个点 X ,让你和一个点集里的每一个点都连一条边。看上去我们只能一个一个连。如果这个点集是连续的呢?我们就可以用线段树来优化建边了。我们知道线段树的结构:我们知道线段树的点是能够代表一段区间的我们需要对于线段树的每个父亲与他的儿子建一条单向边这有什么用呢?因为我们所要求的点集是一段连续的区间,而线段树的结点可以表示某一段区间,我们可以在线段树上找到对应的区间,然后向线段树上的点建边,就可以加快建边速度了。例如我们要向[1,8][1,8][1,8] 里的所有点建边,我们.原创 2020-11-05 17:30:08 · 355 阅读 · 0 评论 -
luogu P3393 逃离僵尸岛(点权最短路 + 多源BFS)
P3393 逃离僵尸岛最短路,有点的不能到达我们就直接把他的权值赋值为INF即可。bfs预处理一下每个点的危险程度。因为这里没有边权是点权,我们可以把边权转化为两端点的权值和,或者直接跑点权最短路即可。#include<cstdio>#include<cmath>#include<algorithm>#include<iostream>#include<cstring>#include<vector>#includ原创 2020-11-04 22:13:57 · 295 阅读 · 0 评论 -
luogu P2865 [USACO06NOV]Roadblocks G(次短路模板)
…题没读清楚,双向边害的我找了半天bug然后就是一个次短路模板题了。#include<cstdio>#include<cmath>#include<algorithm>#include<iostream>#include<cstring>#include<vector>#include<queue>using namespace std;typedef long long ll;const int N.原创 2020-10-29 17:29:39 · 253 阅读 · 0 评论 -
UVA10537 The Toll! Revisited (思维、最短路、输出字典序最小路径)
题目链接我们要注意去的时候交的n/20单位的货物,但是倒着回去求答案的时候我们要加上ceil(n/19.0)(自己手算)字典序中大写字母比小写字母更小注意看数据范围,别总用memset容易超时TLE//注意字典序中大写字母比小写字母小#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<queue>#include<c原创 2020-09-30 22:35:40 · 195 阅读 · 0 评论 -
解题报告:luoguP1462 通往奥格瑞玛的道路(二分、最短路)
我们直接二分答案,二分过路费,每次Dij判断走所有小于当前mid的路能否到达终点且最短路(总扣血)小于最大血量。因为数据中过路费最大为1e9, log2(1e9)<30log_2(1e9)<30log2(1e9)<30所以总时间复杂度为O(30∗nlogn)O(30 * nlogn)O(30∗nlogn),而n为1e41e41e4 ,所以稳过#include<queue>#include<iostream>#include<cstdio>.原创 2020-08-06 20:29:32 · 235 阅读 · 0 评论 -
解题报告:CF1307D Cow and Fields(最短路、最优解不等式化简)
CF1307D Cow and Fields整张无向图的边权为1。首先求出 1,n1,n1,n 两个点的单源最短路径。这 kkk 个特殊点中,我们令第 aaa 个特殊点到 111 的距离为 xax_axa,到 nnn 的距离为yay_aya。设答案是连接 a,ba,ba,b 两点。我们的目的就是最大化min(xa+yb+1,ya+xb+1)min(x_{a} + y_{b} + 1,y_{a} + x_{b} +1)min(xa+yb+1,ya+xb+1)为了不失一般性,我们设xa原创 2020-07-24 19:24:44 · 324 阅读 · 0 评论 -
【图论专题】最小生成树及其简单应用
题目列表:题目算法AcWing 1140. 最短网络prim模板AcWing 1141. 局域网kruskal模板AcWing 1142. 繁忙的都市瓶颈MST(最大边权最小的生成树)AcWing 1143. 联络员确定边最小生成树AcWing 1144. 连接格点确定边最小生成树、搜索建图UVA1395 苗条的生成树 Slim Span瓶颈MST最短路算法A、AcWing 1140. 最短网络(prim模板)#include&l原创 2020-07-18 21:37:04 · 1543 阅读 · 0 评论 -
解题报告:POJ - 1062 昂贵的聘礼(最短路、超级源点)
AcWing 903. 昂贵的聘礼【思路】由于本题只有终点,没有起点,所以我们建一个超级源点S=0S = 0S=0 ,源点与各各点的权值就是他们的价格如下图所示:对于等级而言,因为不能低于酋长等级-m,所以我们枚举一下这个范围,然后只能更新等级在这个范围以内的边,然后跑一个最短路即可。【分析】比较简单的一道最短路,注意没有起点就自己建一个起点,超级源点在图论,网络流里非常常见。#include<iostream>#include<cstdio>#include&原创 2020-07-17 21:13:37 · 418 阅读 · 1 评论 -
【图论专题】Floyd算法及其扩展应用
Floyd的拓展应用:任意两点最短路传递闭包找最小环恰好经过k条边的最短路(倍增)题目列表:题目算法AcWing 1125. 牛的旅行任意两点最短路FloydAcWing 343. 排序Floyd传递闭包AcWing 344. 观光之旅找最小环AcWing 345. 牛站恰好经过k条边的最短路(倍增)A、AcWing 1125. 牛的旅行(任意两点最短路Floyd)题目链接农民John的农场里有很多牧区,有的路径连接一些特定的牧区。一原创 2020-07-17 17:23:07 · 607 阅读 · 0 评论 -
【图论专题】单源最短路的扩展应用
【图论专题】单源最短路的扩展应用原创 2020-07-16 12:13:46 · 413 阅读 · 0 评论 -
【图论专题】单源最短路的综合应用
【图论专题】单源最短路的综合应用原创 2020-07-15 20:04:00 · 642 阅读 · 0 评论 -
解题报告:【kuangbin带你飞】专题四 最短路练习题
最短路合集原创 2020-07-10 23:31:10 · 1020 阅读 · 0 评论 -
解题报告:luoguP2868 Sightseeing Cows G(最优比率环,负环判定,二分答案)
#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>#include<queue>#include<map>using namespace std;const int N = 1e4+7;const int M = 5e4+7;const double eps = 1e-6;int f[N];int head[N],v.原创 2020-06-30 23:58:30 · 519 阅读 · 0 评论 -
PTA 7-3 旅游规划 (25分)(双权值Dijkstra最短路)
7-3 旅游规划 (25分)有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城原创 2020-06-04 17:34:47 · 1268 阅读 · 0 评论 -
0x61.图论 - 最短路
对于一张无向图,我们可以把无向边看作两条方向相反的有向边,所以对于图我们都将其作为有向图来看待。一般用邻接表来存储图,空间复杂度为O(n+m)O(n+m)O(n+m)。int nex[N],ver[N],head[N],edge[N],tot;void add(int u,int v,int val){ ver[++tot] = v; egde[tot] = val; nex[tot] = head[u]; head[u] = tot;}for(int i= he原创 2020-06-02 22:33:17 · 970 阅读 · 0 评论 -
牛客练习赛61 D 最短路变短了(最短路,反向最短路)难度⭐⭐⭐★
最短路变短了 链接时间限制:C/C++ 2秒,其他语言4秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format:%lld题目描述给定一个有向带权图,其中包括 n个城市,城市编号从1 到n,有向边的编号从 1 到 m,现在有一个人位于城市1,并且想要到城市n旅游。现在政府正在决定将一条道路反向,这个人想知道在某一指定道路反向的情况到达城市n最短...原创 2020-04-11 11:09:22 · 329 阅读 · 0 评论 -
CF20C Dijkstra?( Dijkstra!练手)难度⭐⭐⭐
题意翻译题目大意给出一张图,请输出其中任意一条可行的从点111 到点nnn 的最短路径。输入输出格式输入格式第一行:两个整数n,m,分别表示点数和边数接下来m行:每行三个整数u,v,w,表示u和v之间连一条边权为w的双向边。输出格式一行:一个可行的路径,如果不存在这种路径输出-12<=n<=105,0<=m<=1052<=n<=10^5...原创 2020-03-24 23:19:38 · 346 阅读 · 0 评论 -
【图论】用一道题从本质上讲清楚Floyd算法
P1119 【灾后重建】4 51 2 3 40 2 12 3 13 1 22 1 40 3 542 0 20 1 20 1 30 1 4-1-154一道非常好的Floyd最短路练习题,从算法本质上出的题目,对于初学Floyd算法的人来说是绝佳的练习题首先我们从Floyd算法谈起,这是一个看上去很简单的算法-事实上也的确很简单,整个算法一共只有五行,三重循...原创 2020-02-28 22:50:58 · 362 阅读 · 1 评论 -
P2888 [USACO07NOV]牛栏Cow Hurdles(Floyd算法)
P2888 [USACO07NOV]牛栏Cow Hurdles行 1…T: 行 i 为一个整数,表示任务i路径上最高的栏的高度的最小值。如果无法到达,输出 -1。5 6 31 2 123 2 81 3 52 5 33 4 42 4 83 41 25 148-1注意:memset(dis,0x7f,sizeof dis);dis[0][0]=0x7f7f7f7f...原创 2020-02-26 21:11:58 · 393 阅读 · 0 评论 -
最短路合集(Dijkstra、SPFA、Floyd以及路径还原模板)
目录一.Dijkstra算法1.堆(优先队列)优化版本:(慢,占用内存还大)2.线段树优化版本:(超快的)二.SPFA 算法三.Floyd算法一.Dijkstra算法4 6 11 2 22 3 22 4 11 3 53 4 31 4 40 2 4 31.堆(优先队列)优化版本:(慢,占用内存还大)#include<bits/stdc++.h>usin...原创 2020-02-26 19:39:46 · 1747 阅读 · 0 评论 -
P4779 【模板】单源最短路径(标准版)(dijkstra模板)
dijkstra模板输入:4 6 11 2 22 3 22 4 11 3 53 4 31 4 4输出:0 2 4 3堆优化版本#include<bits/stdc++.h>using namespace std;#define debug(x) cout<<"# "<<x<<" "<<endl;typ...原创 2020-02-26 12:51:30 · 429 阅读 · 1 评论