SPFA 算法 算法优点: 1.时间复杂度比普通的Dijkstra和Ford低。 2.能够计算负权图问题。 3.能够判断是否有负环 (即:每跑一圈,路径会减小,所以会一直循环跑下去)。 期望的时间复杂度O(k*e), 其中k为所有顶点进队的平均次数,e是边的数量,可以证明k一般小于等于2。 实现方法 ...
分类:
其他好文 时间:
2019-08-08 23:33:29
阅读次数:
97
恢复内容开始 看到的结论:E是边数,n是点数量。 Dijkstra(迪杰斯特拉):适用于权值为非负的图的单源最短路径,优先队列优化 O(E+nlgn) SPFA:适用于权值有负值,且没有负环的图的单源最短路径,SPFA的最坏情况是O(Vn). Floyd(弗洛伊德):任意两点之间的最短路径。O(n^ ...
分类:
其他好文 时间:
2019-08-07 22:18:23
阅读次数:
136
题意: 有1-n个城市 有m个人去旅游 每个人只能从编号小的城市到编号大的城市 花费费用为COSTij 一开始每个人可以从任意一个城市开始旅行 且每个城市恰好有Vi个人经过(一开始也算经过) 问最小花费 显然用有上下界的费用流非常好理解 每个点进行拆点 两点之间连上界和下界都为Vi 表示正好通过Vi ...
分类:
其他好文 时间:
2019-08-06 13:47:42
阅读次数:
89
题目大意:有n个城市,每一个城市有一个拥挤度Ai,从一个城市I到另一个城市J的时间为:(A(v)-A(u))^3。问从第一个城市到达第k个城市所花的时间,如果不能到达,或者时间小于3输出?否则输出所花的时间。 解题分析: 很明显,此题路段的权值可能为负,所以我们就不能用Dijkstra算法求最短路了 ...
分类:
其他好文 时间:
2019-08-04 01:46:39
阅读次数:
114
前面1099、1100两道题不太明白,上网查的题解上又有太多前置知识点没学过,还望老师讲解。 今天出乎意料地看懂了差分约束,并在下方提示的帮助下完成了1102。 AC代码(Spfa): 看到提示上写用Bellman-Ford算法也不会超时(虽然效率绝对不如Spfa),我就用Bellman-Ford打 ...
分类:
其他好文 时间:
2019-08-04 01:27:11
阅读次数:
79
"题目" 思博贪心题写了一个半小时没救了,我也没看出这是一个$spfa$来啊 设$dp_i$表示彻底干掉第$i$只怪物的最小花费,一个非常显然的事情,就是对于$k_i$值最小的怪物满足$dp_i=k_i$ 非常好理解,反正到最后都要干掉这个怪物,何必再把它干成别的怪物 于是我们按照$k_i$的值先排 ...
分类:
Web程序 时间:
2019-08-02 22:18:18
阅读次数:
119
关于SPFA算法的优化方式 这篇随笔讲解信息学奥林匹克竞赛中图论部分的求最短路算法SPFA的两种优化方式。学习这两种优化算法需要有SPFA朴素算法的学习经验。在本随笔中SPFA朴素算法的相关知识将不予赘述。 上课! No.1 SLF优化(Small Label First) 顾名思义,这种优化采用的 ...
分类:
编程语言 时间:
2019-08-02 16:24:07
阅读次数:
132
2019-07-25 luogu P3627 [APIO2009]抢掠计划 卡了三个小时,看了题解才作出来的(菜) 前驱项; 壹~邻接表存储/遍历 贰~SPFA跑最长路(<改>就行了) 叄·~Tarjan缩点 壹.邻接表储存 两个,add存无边权,未缩点;build有边权,已缩点。 贰.输入 懒得开 ...
分类:
其他好文 时间:
2019-07-25 23:52:44
阅读次数:
196
#pragma GCC optimize(3) #include using namespace std; const int maxn = 205; vector>E[maxn]; int n,m; int d[maxn],inq[maxn]; void init(){ for(int i=0;i... ...
分类:
其他好文 时间:
2019-07-23 16:49:00
阅读次数:
111
利用SPFA算法来解决hdu1874 首先了解一下SPFA的相关概念:https://baike.so.com/doc/6843451-7060772.html SPFA可以处理负权边 若给定的图存在负权边,类似Dijkstra算法等算法便没有了用武之地,SPFA算法便派上用场了。简洁起见,我们约定 ...
分类:
编程语言 时间:
2019-07-23 15:15:51
阅读次数:
110