最短路
酷酷的Herio
这个作者很懒,什么都没留下…
展开
-
同余最短路(总结)
同余最短路(总结)同余最短路其实是一种优化最短路建图的方法。通常是解决给定m个整数,求这m个整数能拼凑出多少的其他整数(这m个整数可以重复取)或给定m个整数,求这m个整数不能拼凑出的最小(最大)的整数。时间复杂度:O(mlogn)O(mlogn)O(mlogn)P3403 跳楼机给定x,y,z,hx,y,z,hx,y,z,hax+by+cz=kax+by+cz=kax+by+cz=k,a,b,c≥0a,b,c\ge 0a,b,c≥0,求满足条件k≤hk\le hk≤h的kkk有多少个。考虑令d原创 2021-07-08 20:38:21 · 839 阅读 · 0 评论 -
P1491 集合位置(次短路)
P1491 集合位置(次短路)第一遍跑dij的时候记录下最短路径的每个点的前驱结点,然后依次删除这些边,再跑最短路得到的就是第二短路,注意特判只有一条最短路的情况。与P1186类似,应该也可以用线段树+并查集优化。code// Problem: P1491 集合位置// Contest: Luogu// URL: https://www.luogu.com.cn/problem/P1491// Memory Limit: 125 MB// Time Limit: 1000 ms// Dat原创 2021-07-05 11:10:45 · 316 阅读 · 0 评论 -
P1613 跑路(倍增)
P1613 跑路(倍增)思路此题瓶颈在如何预处理出任意两点的真实距离,由题意知,1s1s1s可以跑2k2^k2k的距离,而最短距离不超过longintlong intlongint,所以可以利用倍增,先预处理出所有1s1s1s的边,然后再跑最短路,正确性就得到保证了,值得注意的是,本题是有向图。时间复杂度:O(32n3)O(32n^3)O(32n3)code// Problem: P1613 跑路// Contest: Luogu// URL: https://www.luogu.com.cn原创 2021-04-06 20:07:28 · 290 阅读 · 0 评论 -
P2934 [USACO09JAN]Safe Travel G(并查集&最短路树)
P2934 [USACO09JAN]Safe Travel G(并查集&最短路树)思路一个图的最短路中每个结点最后更新的边可以组成一个最短路生成树。由题目条件可知,我们要寻找每个结点不经过该父亲边的一条最短路。考虑对于当前结点iii先经过其子树的一个结点uuu,然后经过非树边u→vu\rightarrow vu→v,然后从v→1v\rightarrow 1v→1。这样计算的答案是:du+dv+wu,v−did_u+d_v+w_{u,v}-d_idu+dv+wu,v−di,注意到前面原创 2021-04-01 15:54:01 · 307 阅读 · 0 评论 -
D. Shortest Cycle (最小环&鸠巢原理)
D. Shortest Cycle (最小环&鸠巢原理)题意给定n(n≤105)n (n\le 10^5)n(n≤105)个数aia_iai,若ai&aj≠0a_i\& a_j\neq0ai&aj=0则,ai,aja_i,a_jai,aj连有一条权为1的边,求最小环的长度,这里的最小环的点个数至少为333。思路鸠巢原理,因为ai≤1018a_i\le 10^{18}ai≤1018,也就是最多有646464位,我们记ai≠0a_i\neq 0ai原创 2020-12-23 14:04:01 · 364 阅读 · 0 评论 -
HDU 1599 find the mincost route(最小环)
HDU 1599 find the mincost route(最小环)题意:给定带权无向图,可能有重边,求至少结点数为3的最小环,这里环的权值定义为环上带权边的权值之和。思路:floydfloydfloyd解决,考虑遍历到第kkk个中转站时,我们已经求出i,j<ki,j<ki,j<k时的最短路d[i][j]d[i][j]d[i][j],所以若i,j,ki,j,ki,j,k在一个环上的话,则ans=min(ans,d[i][j]+g[i][k]+g[k][j])ans=min(ans原创 2020-12-23 13:38:14 · 365 阅读 · 0 评论 -
hdu.6705.path(k短路径)
hdu.6705.path(k短路径)思路:优先队列+++优化。考虑对每个节点的出边排序,然后将每个结点的最小出边加入到队列。接着考虑两种情况:对于当前最短路径最后的一条边u→vu\rightarrow vu→v,路径权值和为www。1.选择uuu的下一条出边u→v1,u\rightarrow v_1,u→v1,路径权值和为w+w(u,v1)−w(u,v)w+w(u,v_1)-w(u,v)w+w(u,v1)−w(u,v)2.延申到vvv的最短出边v→xv\rightarrow xv→x, 路原创 2020-09-15 20:40:41 · 330 阅读 · 0 评论 -
AtCoder Beginner Contest 061(CD)
AtCoder Beginner Contest 061(CD)C - Big Array思路:mapmapmap排序记数,注意开LLLLLLD - Score Attack此题题意严重不清晰,题目只要求d[n]d[n]d[n]是否可以无限增加,但是正解是点nnn必须在正环中才行。因为考虑spfaspfaspfa判正环,或者暴力bellman−fordbellman-fordbellman−ford特判第nnn次和第2n2n2n次的d[n]d[n]d[n]是否相同来判正环。spfaspfaspf原创 2020-08-26 10:18:30 · 365 阅读 · 0 评论 -
牛妹游历城市(最短路)
牛妹游历城市(最短路)思路:以每个位建立虚点,然后跑最短路即可。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+40,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;#define mst(a,b) memset(a,b,sizeof a)#define lx x<<1#define rx x<<1|1#define reg原创 2020-08-18 21:53:30 · 323 阅读 · 0 评论 -
POJ.1201 Intervals(区间约束)
POJ.1201 Intervals(区间约束)思路:区间约束问题,转最长路跑spfaspfaspfa,注意区间是[0,50000][0,50000][0,50000]。但是我们连边是add(u−1,v,w)add(u-1,v,w)add(u−1,v,w),所以考虑整体右移一位,然后从000开始跑,此外还有一个限制是:d[v]−d[v−1]∈[0,1]d[v]-d[v-1]\in[0,1]d[v]−d[v−1]∈[0,1]。再每次构建两条边即可。#include<iostream>#i原创 2020-07-23 10:28:10 · 293 阅读 · 0 评论 -
P5960 【模板】差分约束算法(spfa)
P5960 【模板】差分约束算法(spfa)思路:考虑转化为最短路跑spfaspfaspfa,因为本题只需求出可行解,所以判一下负环即可,另外注意我们需要建立一个超级源点从000连边开始跑,因为图可能是不能连通的,若从111跑可能会不能得到所有点的答案,所以从000开始跑能有效地避免不连通的情况。#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<原创 2020-07-23 09:00:55 · 400 阅读 · 0 评论 -
P4878 [USACO05DEC]Layout G(差分约束&最短路)
P4878 [USACO05DEC]Layout G(差分约束&最短路)思路: 差分约束转最短路。此题关键是建图和特判。建图:因为是求max(d[n]−d[1])→d[n]−d[1]≤ansmax(d[n]-d[1])\rightarrow d[n]-d[1]\leq ansmax(d[n]−d[1])→d[n]−d[1]≤ans,ansansans是我们要求的答案,即我们需要让ansansans最小化,这与最短路中若:d[v]>d[u]+w→d[v]=d[u]+w若:d[v]&g原创 2020-07-22 23:07:21 · 367 阅读 · 0 评论 -
D - .. (Double Dots)(贪心&最短路)
D - … (Double Dots)(贪心&最短路)传送门思路:一开始以为是单源最短路水题,每次更新储存下相邻的结点即可,这种做法能AC,但是复杂了。后来看了别人写的,跟最短路没什么关系,因为题目保证是个连通图,所以必有答案,又因为相连的点距离恒为1,所以贪心即可,与1相连的点的答案必定是1,然后不断向外扩散即可。。spfaspfaspfa做法:#include<bits/stdc++.h>using namespace std;typedef long long ll;原创 2020-05-18 13:38:21 · 452 阅读 · 0 评论 -
小雨坐地铁 (分层最短路&建立虚点)
小雨坐地铁 (分层最短路&建立虚点)思路:建立一个虚点层,题目等价于求虚点层起点到终点的最小花费。同一层边花费b,虚点层到其他每层花费a。跑一边dijkstra即可。AC代码:#include<bits/stdc++.h>using namespace std;const int N=1e6+5,inf=0x3f3f3f3f;struct edge{ int to...原创 2020-04-24 17:41:19 · 323 阅读 · 0 评论 -
P4568 [JLOI2011]飞行路线 (分层最短路&模板)
P4568 [JLOI2011]飞行路线 (分层最短路&模板)思路:板子题,具体看代码。AC代码:#include<bits/stdc++.h>using namespace std;const int N=5e6+5;struct edge{ int to,nt,w;}e[N];struct node{ int d,id; bool operator&l...原创 2020-04-23 21:17:51 · 316 阅读 · 0 评论 -
牛客小白月赛24 E.旅旅旅游(最短路&并查集)
牛客小白月赛24 E.旅旅旅游(最短路&并查集)题目传送门思路:AC代码:#include<bits/stdc++.h>using namespace std;const int N=1e5+5,M=5e5+5;typedef long long ll;ll d1[N],d2[N];int n,m,s[N];struct node{ ll d; ...原创 2020-04-20 12:30:55 · 337 阅读 · 0 评论 -
B - Cow Contest (floyd之传递闭包)
B - Cow Contest (floyd之传递闭包)题意:给定m个胜负关系,求能确定多少个人的排名思路:显然用floyd进行状态更新即可。AC代码:#include<cstdio>#include<cstring>#include<iostream>using namespace std;int f[105][105];int n,m;v...原创 2020-04-20 10:26:26 · 326 阅读 · 0 评论 -
D - Frogger (最短路)
D - Frogger (最短路)题意:求1到n所有路径的最大值中最小必要值。题目传送门思路:AC代码:#include<cstdio>#include<cstring>#include<iostream>#include<queue> #include<cmath>#include<algorithm>...原创 2020-04-20 10:18:49 · 308 阅读 · 0 评论 -
POJ - 1797 Heavy Transportation (最短路之最大权值)
POJ - 1797 Heavy Transportation (最短路之最大权值)题目传送门思路 :#include<cstdio>#include<cstring>#include<iostream>#include<queue> #include<cmath>#include<algorithm>us...原创 2020-04-20 10:02:14 · 378 阅读 · 0 评论 -
Nowcoder Practice 61 D.最短路变短了 (最短路)
Nowcoder Practice 61 D.最短路变短了 (最短路)题目传送门题意:给定有向带权图,求将一条边反向是否使最短路变短。思路:显然修改后若不走这条边最短路不会变短,若走这条路需要比较d[v]+w+d1[u]与d[n]的关系 (d[ i ]表示到1的距离,d1[ i ]表示到n的距离。SPFA 链式#include<bits/stdc++.h>using nam...原创 2020-04-11 11:41:17 · 304 阅读 · 0 评论