SPFA
逐梦起航-带梦飞翔
为了更加长远的快乐!
展开
-
SPFA—SLF+LLL优化
spfa的时间复杂度为O(me),其中e为路径数量,m为所有顶点进队的平均次数。有两种优化策略,分别是SLF和LLL。如果两者加起来,最大可以减少50%的时间。它们的最终目的是一致的,都是想让最靠进答案的点先去更新它附近的点,可能更新过程中就把目前队列中的点给更新了。如果先让那些迟早要被更新的点先去更新其他点,所有这些点迟早会被再更新一遍。因此,m的值就会变大。想要控制spfa的时间复杂度,就要从...原创 2018-02-12 15:30:09 · 603 阅读 · 2 评论 -
最短路算法集合
一、Dijkstra算法:仅限用于无边权为负数的图,更不能正确处理负环的情况。把所有点分成两个集合,S集合是存已经确定下来、不会再更改(准确一点的话是“不能再更改”)的点,T集合是待确定的点集。从T集合中的点中,选择一个到st最近的点x。让这个点为其它点更新:如果y点到st的距离大于 x点到st的距离 + x->y这条边的距离,则改进y到st的值。然后x加入S集合。更透彻地理解,这种算法每次...原创 2018-02-13 11:36:09 · 464 阅读 · 0 评论 -
洛谷1073 最优贸易(spfa)|(分层图)
题目 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为 1 条。 C 国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价格不一定相同。但是,同一种商品在同一个城市的买入价和卖出价始终是相同的。 商人...原创 2018-04-21 13:25:34 · 380 阅读 · 0 评论 -
USACO4.1 篱笆回路Fence Loops
【题意】有N(1<=N<=100)条双向边,我们知道每条边的三个属性:边的长度,边的一端所连接的边,边的另一端所连接的边。边不连接自身,且只在端点处连接其他边。求其中的最小环。输入格式第一行:N(1<=N<=100)。第2到3*N+1行:每三行为一组:每组第一行有四个整数:边的标号s(1<=s<=N),长度L(1<=L<=255),一端连接的边的数量...原创 2018-06-03 13:30:38 · 343 阅读 · 2 评论 -
洛谷2868 [USACO07DEC]观光奶牛Sightseeing Cows(0/1分数规划)(SPFA)
题目 给定一张有向图,每个节点有一个权值fun[i],每条边有一个权值time[i]。求图中的一个环,使环上各点权值之和除以各边权值之和最大。 题解 0/1分数规划+spfa判负环 把题意公式化,得到求最大,其中x[i]表示选或不选。 设,那么有。 假设我们要求到最大的这个分式值,相当于就是要求最大的L。可以证明这个分式值满足二分性,即L满足二分性。 在二分时,如果有那么L可以有更大的...原创 2018-10-04 14:52:03 · 292 阅读 · 0 评论 -
poj3662 Telephone Lines(二分)(spfa)
题目 poj3662 Telephone Lines 题解 二分+spfa判断 一个问题如果满足二分性,整个问题就变得完全不一样了! 显然,花的钱数满足二分性,问题就变成了判断是否存在一种免费方案,使得最大边权小于等于mid;或者说的直白一点,有没有一条路径,其上的边权大于mid的边的条数小于等于mid。 这下,对于每个mid的,我们使所有原边权大于mid的现在为1,小于等于mid的现在为0...原创 2018-10-14 08:22:59 · 177 阅读 · 0 评论 -
洛谷3001 [USACO10DEC]巨无霸(spfa)
题目 洛谷3001 [USACO10DEC]巨无霸 题解 spfa d[y]=min{ d[x]*e[k].c } 这题的坑点是有“小于1环”,所以不但不能用dijkstra,还要加一个判“小于1环”。 还卡了精度,要用long double,long double的输入输出用%Lf。 代码 #include<cstdio> #include<cstring> ...原创 2018-10-23 13:21:17 · 244 阅读 · 0 评论 -
洛谷SP2885 WORDRING - Word Rings(0/1分数规划)(SPFA)
题目 洛谷SP2885 WORDRING - Word Rings 题解 0/1分数规划+spfa判正环 先套0/1分数规划的公式: 再一变 接下来就是一个判正环的问题了。如果有正环则上式>=0,即L有更大取值;否则L无法达到这么优。 提一下建边,真的要做一个什么KMP,AC/后缀自动机,还是马拉车?都是乱来!这样想,它说的是后两个字符,所以不妨直接用两个字符表示点的编号...原创 2018-10-26 21:54:59 · 489 阅读 · 0 评论