最短路
Michael_GLF
AFOing
展开
-
第一届“文翁杯”现场竞技赛 T6 障碍(最短路树)
传送门【题目分析】调了一晚上的题qwq。。。%%%zxy原创题啊tql%%%先说说最短路,由于出题人极为毒瘤,他既卡了SPFA又卡了堆优化的dij(反正我也没写qwq堆优化只有10pts来着?),考虑一个点可能被多次松弛,所以堆里可能会有许多无用状态,所以只要卡卡这个堆的大小高度就会让一次操作的复杂度接近n但不满,所以考虑一个稳定复杂度的算法就是用set去代替堆。然后考虑答案的统计...原创 2019-01-30 21:32:06 · 193 阅读 · 3 评论 -
洛谷3953【NOIP2017DAY1T3】 逛公园(最短路+DP)
氵谷传送门【题目描述】很仙的一道最短路,想出状态定义后还是比较好做的。首先跑出1到所有点的最短路,记作dis[i]。定义状态方程dp[x][i]表示到点x比最短路大i的路径条数,根据这个数据规模明显直接O(nk)枚举就行。DP转移方程:,这里因为一个点可以被多次搜到,所以记忆化可以做到剪枝效果。而后面这个式子看着长其实移项后就是,其中表示如果走这条边比最短路长多少,然后用当前枚...原创 2019-09-27 20:09:59 · 177 阅读 · 0 评论 -
浅谈最短路之——迪杰斯特拉(Dijkstra)算法
迪杰斯特拉算法复杂度为O(n^2),加入堆优化后可以优化到O((m+n)logn)的级别。主要适用于解决不含负边权的单源最短路。其基本思想是:记S为已找到源点的最短路的点的集合,V为不在集合S中的点的集合,用dis数组记录i到源点的最短路径长度,每次取V中w值最小的v加入S,更新dis的值,重复上述步骤直到所有点都在S中,这样dis[t]即为最短路径长度。 而我们发现,如果边...原创 2018-08-01 17:44:43 · 3154 阅读 · 0 评论 -
浅谈最短路之——Floyd算法
在所有最短路算法中,Floyd算法是最好写的一种,一共只有四排,但复杂度也达到了很大的O(n^3)。其思路就是DP,对于任意三个点a,b,c,a到b的最短距离为min(dis[a,b],dis[a,c]+dis[c,b]),所以三重循环枚举所有边得到最短路。 图示:由上图可见,如果a,b,c能构成一个三角形,那么dis[a,b]就一定优于dis[a,c]+di...原创 2018-08-01 21:28:44 · 291 阅读 · 0 评论 -
浅谈最短路之——Bellman-Ford和SPFA
最短路算法中,精确找到最短路最常用的办法莫过于Bellman-Ford以及其优化后的SPFA算法。 Bellman-Ford算法较Dijkstar算法可以应用于含负边权的图,对于一个图G(V,E),其中V为点集,E为边集,源点s,首先定义dis数组,dis[i]为i到s的最短距离。枚举每一条边(u,v),如果dis[u]+w[u,v]<dis[v],就更新dis[v]...原创 2018-08-02 18:42:18 · 820 阅读 · 0 评论 -
NOIP模拟 新的家园(毒瘤建图+最短路)
QAQ【题目分析】由题意可得:这个图是由一个环加几条环外边构成,那么将这个环拆成链后,整个图就由1~n首尾相连的边与一些链外边组成,我们发现,如果一个点的最短路被更新,只能通过链外边,所以我们将链外边的两端点设为特殊点,根据这些特殊点建图然后跑最短路,边的数量就大大减少,可以承受3w次的询问。然后考虑非特殊点如何加入子图,我们只需要将其与离其最近的两个特殊点连边即可,最后利用前向星进行...原创 2018-10-23 19:37:42 · 151 阅读 · 0 评论 -
NOIP模拟 有向无环图(玄学建图+最短路)
内网传送门【题目分析】SPFA竟然有人乱搞A了?orz(蒟蒻乱搞只有40pts qwq)很巧妙的建图思路,将每条路径视为一个点,从一条路径i到达另一条路径j,如果w[i]<w[j],那么会产生w[j]-w[i]的费用,否则不会产生任何费用。所以考虑将所有边存下,然后每个点遍历一遍,将边排序,从小到大依次加费用为0的边,再从大到小加费用为w[i]-w[i-1]的边,最后在图上跑...原创 2018-10-30 20:12:48 · 326 阅读 · 0 评论 -
NOIP模拟 规避(最短路计数+乘法原理)
内网传送门【题目分析】第一次接触最短路计数。。。。。。qwq首先,不相遇情况复杂,所以直接选择总方案-相遇方案。显然,因为最短路长度一定,两人速度相同,那么他们如果相遇,那么一定在最短路的中点。所以这个中点就有两个情况:在点上、在边上。考虑在点上,我们跑正反两遍Dijkstra处理所有点到s和到t的最短距离,那么显然如果中点在点上,先判断该点是否在最短路径上,如果是就看是否...原创 2018-11-05 18:21:32 · 180 阅读 · 0 评论 -
洛谷2505 [HAOI2012]道路(最短路计数)
洛谷传送门【题目分析】线段树?bczd,这么小的范围直接暴力就行啦。直接O(n)枚举源点,每次跑最短路,然后对于每一条路径统计是否在最短路上、两个端点各有多少条最短路径经过即可。【代码~】#include<bits/stdc++.h>using namespace std;const int MAXN=1e3+510;const int MAXM=1e4+1...原创 2018-11-28 16:57:25 · 155 阅读 · 0 评论 -
【洛谷2296】【NOIP2014DAY2T2】寻找道路(最短路)
传送门【题目分析】这是DAY2T2??????嘻嘻嘻嘻嘻嘻嘻嘻直接从终点跑到起点的最短路就行了。。。。。。然而我sb了先把合法点跑出来再做的最短路反正能过就行hhhh#include<bits/stdc++.h>using namespace std;const int MAXN=1e4+10;const int MAXM=2e5+10;const i...原创 2019-10-04 10:58:41 · 118 阅读 · 0 评论