最短路
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【JOI 2020 Final】【LOJ3255】奥运公交(最短路)
传送门题解:直接跑最短路,然后考虑翻转每一条边之后怎么快速算代价。显然如果这条边不在 1−n1-n1−n 或者 n−1n-1n−1 的最短路上,直接考虑强行走过这条边的最短路就行了,可以通过记录最短路和次短路(要求前驱不同的最短路)来实现。否则,这样的边只有 O(n)O(n)O(n) 条,直接重新跑 Dijkstra 即可。由于图非常稠密,不用堆优化还好一点。代码:#includ...原创 2020-04-01 09:54:01 · 389 阅读 · 0 评论 -
【校内模拟】分居(最短路)
简要题意:给一张带权无向连通图,请你确定两个位置,可以在边上,使得这两个位置的之间的最短路最大。题目给的范围 :n≤1e3,m≤2e3n\leq 1e3,m\leq 2e3n≤1e3,m≤2e3题解:写官方题解的人是个傻逼,根本不需要考虑的那么复杂。而且输入数据比题目给的范围大了将近一倍,造数据的人也是傻逼。想法非常显然,确定两条边 (u,v,w1),(x,y,w2)(u,v,w_1...原创 2020-02-17 22:39:30 · 153 阅读 · 0 评论 -
【模板】K短路的稳定复杂度求法
描述给出一个有向图,你需要求出SSS到TTT的所有路径中权值第kkk小的路径的权值。这里的第kkk小是指,将所有本质不同的路径的权值排序后(不去重),从小到大排名为kkk。数据保证KKK短路一定存在。数据卡A∗A*A∗以及乱搞+A∗A*A∗。输入第一行两个整数n,mn,mn,m表示点数和边数。然后mmm行三个整数ui,vi,wiu_i,v_i,w_iui,vi,wi表示m条边。...原创 2019-01-24 20:02:33 · 879 阅读 · 0 评论 -
2019.01.24【SDOI2010】【洛谷P2483】魔法猪学院(K短路)(可持久化左偏树)
传送门解析:一发AC,然后按照惯例开O2交了一发,就是为了冲榜。WOC怎么这么多人比我快。。。然后一看代码,WOC怎么还有A∗A*A∗跑得比我快的。。。结果他们都是面向数据编程。。。加了这个特判:if(fabs(E-10000000)<1e-6){ printf("2002000\n"); return 0; }把最大的那个点给糊弄过去了。。。然后我加了个特判交了...原创 2019-01-24 20:41:53 · 343 阅读 · 0 评论 -
2019.01.24【POJ2449】Remmarguts' Date(K短路)
OpenJudge传送门BB:我彻底放弃POJ了,它今天被卡成这样了。。。各位以后还是去OpenJudge上做题吧,题号题目都和POJ完全一样的。这道题就是K短路板题啊,可以看一下我的K短路讲解:https://blog.csdn.net/zxyoi_dreamer/article/details/86632445嗯。我没用A*,直接用的可持久化左偏树。代码:#include&...原创 2019-01-24 21:02:51 · 154 阅读 · 0 评论 -
【NOI2019】【LOJ3259】【洛谷P5471】弹跳(K-D Tree)(最短路)
LOJ传送门洛谷传送门(题解) 社论:我觉得我这个是个乱搞,但是是个复杂度优秀的乱搞,好像只有O(mlogm+nlog2n)O(m\log m+n\log^2 n)O(mlogm+nlog2n)一眼KDTree优化建图跑dijkstra,然后写了个滚动切割静态KD-Tree,边数被卡爆只有88pts。所以我们的策略是不建边。在优先队列里面保留整个矩形,然后考虑用某种数据结构询问当前...原创 2019-07-18 20:44:41 · 398 阅读 · 1 评论 -
【CF464E】The Classic Problem(最短路)(主席树)(哈希)
传送门题解;主席树维护二进制串跑Dijkstra,没了。注意找进位地方需要直接O(log2)O(log^2)O(log2),不然复杂度就假了调到自闭后直接重构,重构的一A了。代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs ...原创 2019-09-06 21:43:26 · 223 阅读 · 0 评论 -
【CodeChef CHEFBOOK】Chefbook(线性规划)(对偶原理)(费用流)(差分约束)
传送门由于有一个判负环的步骤,所以费用流里面求最短路可以直接用Johnson算法。然后我Johnson敲挂了T了五次。。。题解:考虑实际上就是给出了2m2m2m个限制:Li≤pui−qvi≤RiL_i\leq p_{u_i}-q_{v_i}\leq R_iLi≤pui−qvi≤Ri有没有解可以利用差分约束。拆开看一下是一个线性规划:limits:pui−qvi≤Riq...原创 2019-09-14 11:55:45 · 385 阅读 · 0 评论 -
【题目泛做】迷路(最短路树)
题解:首先解决掉重边自环。图有可能是完全图。。。不清楚有没有卡SPFA。考虑一个极小环,即不能通过将点减少和重排使得环长变小的环。显然环上任意两点之间有两条环上路径,其中一条必然是最短路,否则我们用最短路可以把这个路径换掉继续减少环长。由于数据范围十分小,我们考虑以每个点为根构造最短路树,然后枚举所有非树边,找到一个环来更新根的答案。时间复杂度O(nmin(m,(n2))logn...原创 2019-09-19 15:56:19 · 184 阅读 · 0 评论 -
【CF715B】Complete The Graph(最短路)
传送门闲来无事写水题。题解:首先把所有未定边权设置为111,从TTT倒着跑一遍最短路。然后从SSS正着跑最短路,跑的时候把所有未定边的边权设置成max(1,L−disS[u]−disT[v])\max(1,L-disS[u]-disT[v])max(1,L−disS[u]−disT[v])即可得到一组解。当然最后跑出来最短路不是LLL当然就无解。代码:#include<b...原创 2019-10-04 08:57:25 · 351 阅读 · 0 评论 -
2019.01.17【CodeForces757】F. Team Rocket Rises Again(最短路)(支配树)
传送门解析:题意:给出一个有向图,求删除一个节点后,最多可能有多少个从SSS开始的最短路边长(删除的节点距离变为INF)(不可以删除S)思路:支配树裸题。显然删除的点要在SSS到其他点的最短路上,而且是必经点。跑一个最短路,构建出以SSS为根的最短路DAG,然后Lengauer-Tarjan一波求出支配树。选择SSS最大的儿子,就完了。。。当然DAG有常数较小的做法,不过在允许边权...原创 2019-01-17 11:29:37 · 162 阅读 · 0 评论 -
2018.12.08【FJOI2014】【BZOJ4016】【洛谷P2993】最短路径树问题(最短路)(点分治)
BZOJ传送门洛谷传送门解析:辛辛苦苦调了半天发现是最短路树建错了。。。思路:首先跑一个最短路,然后将每个点的所有出边按照出点编号排序,DFS建出最短路树。这样建树才能够保证字典序是最小的。(naive的我按照前驱结点建树WA哭了)那么看一下题目要统计的东西,似乎是可以用点分治来做的。注意这个统计的前提是最优化,所以不可以用容斥原理来做。那么对于每一个分治重心,按照子树顺序处理...原创 2018-12-08 16:26:27 · 252 阅读 · 0 评论 -
2018.11.05【校内模拟】规避(最短路计数)(容斥)(正难则反)
传送门解析:首先直接统计并不好做,考虑反着做,先求出总共的方案数,然后减去相遇的方案数。总方案数就是SSS到TTT的最短路数量的平方(两人分别作选择)。首先这是个计数类问题,先做一个最短路计数。令distSudistS_udistSu表示SSS到uuu的最短路长度,cntSucntS_ucntSu表示SSS到uuu的最短路数量,distTudistT_udistTu和cntTuc...原创 2018-11-05 14:39:36 · 159 阅读 · 0 评论 -
2018.09.28【Vijos1053】Easy sssp(SPFA判负环)
传送门解析:深入理解SPFASPFASPFA的本质。思路:由于是队列优化的Bellman−FordBellman-FordBellman−Ford,SPFASPFASPFA也具有判负环的功能,但不同的是Bellman−FordBellman-FordBellman−Ford可以直接求出负环大小。一般来说,求最短路我们会用BFSBFSBFS版的SPFASPFASPFA,而判负环我们选择D...原创 2018-09-28 11:16:29 · 144 阅读 · 0 评论 -
2018.10.10【ZOJ2760】How Many Shortest Path(最短路)(网络流)
传送门解析:题意简述:给出一个有向图,问从SSS到TTT的边不相交的最短路有多少条。思路:首先肯定要求最短路。然后这是一个匹配问题。我们考虑用网络流来完成。匹配问题的一般套路就是将需要匹配的东西在流网络中用一条边串起来,设容量为1,求最大流就是匹配的数量了。那么这道题中,什么是合法可匹配的东西?由于我们已经求了最短路了,那么满足dist[v]=dist[u]+w[e]dis...原创 2018-10-10 13:57:11 · 101 阅读 · 0 评论 -
2018.10.10【CQOI2015】【BZOJ3931】【洛谷P3171】网络吞吐量(最短路)(最大流)
BZOJ传送门洛谷传送门解析:好粗暴的最短路加最大流。。。思路:首先题目要求数据沿最短路传递,而且题目都说了DijkstraDijkstraDijkstra,怎么还有人写SPFASPFASPFA,不怕被卡吗?于是,我们先DijkstraDijkstraDijkstra求出最短路。然后根据题目要求构建流网络图,就是只有在最短路树里面的边才能够加入流网络,并且容量设为INFINFINF...原创 2018-10-10 16:11:10 · 131 阅读 · 0 评论 -
2018.10.19【网络流24题】【洛谷P2761】【LOJ6009】软件补丁问题(最短路)
传送门解析:这道题与网络流什么关系都没有。都没有。。都没有。。。那它为什么在网络流24题里面啊?!!!!思路:我真的是一脸懵逼,我连最短路做法都想出来了还是没有想出来网络流怎么做,然而网上也并没有找到网络流做法,如果正在读这篇博客的您有思路或者看到过这道题的网络流做法,欢迎告知博主。那么就直接最短路一阵乱搞过去吧。注意不要试图建边,一不小心就很可能MLEMLEMLE,毕竟这是一个有...原创 2018-10-19 23:29:29 · 133 阅读 · 0 评论 -
2018.10.28【USACO2007 nov】次短路径(最短路)(结论)
描述贝西所在的牧场一共有 N 个地点。 M 条双向通行的道路连接这些地点,其中第 i 条道路连接 Ai 和 Bi,长度为 Li。贝西想从第一个地点走到第 N 个地点,由于路上风景不错,她决定不走最短 路径,而选择次短路径。次短路径的长度严格大于最短路径。如果有两条路径的长度都是最短的,那 么它们都不算次短路径。次短路径允许重复通过一些道路或地点。请你帮助贝西找出次短路径的长度 吧,输入数据保证次...原创 2018-10-28 21:48:04 · 265 阅读 · 0 评论 -
2018.10.21【网络流24题】【洛谷P4009】【LOJ6223】汽车加油行驶问题(最短路/费用流)
传送门解析:啊啊啊啊,这道题和网络流关系大吗?大吗?大吗?就算是费用流来做实际上增广的过程也只被执行了一次,本质上仍然是最短路。其实就是跑分层图的最短路,主要说说怎么构建分层图。一看这个kkk不好维护,它对路径的费用及贡献都十分的不可控,由于有一个强制消费机制的存在,我们根本没有办法令kkk在状态中表示一个特定的东西。那么我们令dist[(i,j,k)]dist[(i,j,k)]di...原创 2018-10-21 16:54:09 · 200 阅读 · 0 评论 -
2018.10.23【校内模拟】“新”的家园(最短路)(玄学建图)
传送门解析:首先我们是不能直接在原图上直接跑最短路的,时间肯定爆炸。(废话)我们注意一个性质,环外边最多只有300,第一种情况不管,反正只有一组询问。那么这三百条边最多会连接600个节点。这些点我们称为关键点,这些边称为关键边。可以发现,除了环上距离,能够更新两点之间的最短路的只有关键边。那么考虑原来的环上相邻两个关键点之间的那些点。显然,当所求最短路的起始点不在这些点中时,这些点的...原创 2018-10-23 18:51:15 · 112 阅读 · 1 评论 -
2018.10.30【校内模拟】有环无向图(最短路)(化边为点)
传送门解析:首先,这道题没有负边权,写SPFASPFASPFA的不是想乱搞过题就是压根不会DijkstraDijkstraDijkstra。然而真的有人乱搞过了题。。。然后在OJOJOJ上又被新数据卡TTT了。思路:直接建边显然是O(∑degi2)O(\sum deg_i^2)O(∑degi2),跑最短路就是O(m2logm)O(m^2logm)O(m2logm),肯定会gg。考虑优...原创 2018-10-30 23:38:49 · 342 阅读 · 0 评论 -
2018.11.07【NOIP2017】【洛谷P3953】逛公园(DP)(魔改最短路计数)
传送门解析:首先这鬼畜的最短路肯定你是要自己跑一遍的。但是我是在反图上面跑。。因为我的DP策略表示在当前点uuu剩余冤枉路可以走restrestrest走到终点的方案数,所以我需要的是每个点到终点的最短路,起点…不重要。然后就直接这样子记忆化搜索一下就行了。代码:#include<bits/stdc++.h>using namespace std;#define ...原创 2018-11-07 23:16:03 · 149 阅读 · 0 评论 -
2018.09.27【BZOJ2118】墨墨的等式(背包问题)(最短路)
传送门解析:这道题卡数组大小卡得我心力交瘁。。思路:从来没见过的做法,跑最短路求解背包问题我也是看了别的dalao的题解才会的我们选择最小的aia_iai作为模数,使得其他所有数都可以由它转移过来。怎么转移?令d[i]d[i]d[i]表示当物体的总重%a_i=q时,物体最少的重量。设d[i]=td[i]=td[i]=t,那么显然对于所有的xxx,如果xx%a_i=qx且x&am...原创 2018-09-27 21:46:08 · 225 阅读 · 0 评论