最短路
文章平均质量分 84
StaroForgin
这个作者很懒,什么都没留下…
展开
-
[航海协会]SSSP
我只能说*b题就是这样的,没有意思。原创 2022-07-24 20:49:00 · 229 阅读 · 0 评论 -
[硫化铂]旅行
被校长爆杀...原创 2022-03-14 20:56:14 · 312 阅读 · 0 评论 -
[海军国际项目办公室]欢乐豆
一点也不欢乐。(╥╯^╰╥)原创 2021-11-10 19:22:21 · 605 阅读 · 0 评论 -
[海军国际项目办公室]序列
OneInDark又吊打我了。o(TωT)o原创 2021-09-09 22:23:18 · 101 阅读 · 0 评论 -
[海军国际项目办公室]快递
OneInDark立大功!!!原创 2021-09-08 16:53:09 · 134 阅读 · 0 评论 -
[CF980F]Cactus to Tree
感觉图画得好奇怪呀。原创 2021-07-16 11:36:05 · 191 阅读 · 0 评论 -
[CF1483D]Useful Edges
Useful Edges题解首先我们考虑如何判断一条边合法,我们定义u,vu,vu,v之间的最短路为disu,vdis_{u,v}disu,v,询问三元组的长度为asku,vask_{u,v}asku,v,记边为(x,y)(x,y)(x,y),询问为(u,v)(u,v)(u,v)那么对于边iii,条件是∃j,disuj,xi+paidxi,yi+disyi,vj⩽askuj,vj\exists j,dis_{u_{j},x_{i}}+paid_{x_{i},y_{i}}+dis_{y_{i},原创 2021-05-12 21:58:02 · 329 阅读 · 1 评论 -
[AT ZONe2021]Sneaking
Sneaking题解很简单地一道题首先,我们可以考虑给它暴力建图来找最短路,但由于向上走的话,每个在它上面的点都可以被走到 ,所以我们的边数可能会达到n4n^4n4级别,明显是不行的。于是,我们得想一些方法来缩小它的边数。从点iii向上走到点jjj的花费是i−j+1i-j+1i−j+1,关键是这个+1+1+1很难弄。我们可以借鉴一些我们网络流分块的建图方法,虽然并不需要分块, 对于每一个点建一个虚点,点iii到虚点i′i'i′的长度为111,再从i′i'i′依次向(i−1)′(i-1)'(i−1原创 2021-05-02 09:26:21 · 191 阅读 · 0 评论 -
[省选联考 2021]矩阵游戏
矩阵游戏题解很明显,前50pts可以手玩出来我们可以先不考虑0⩽a⩽1060\leqslant a\leqslant 10^60⩽a⩽106的限制,先暴力跑出来一组解,在这组解上修改得到合法解。如何进行修改得到的答案满足bbb的限制呢?我们需要使得每一个方块格子和不变。于是,我们有了以下四种构造方法:+x+x+x,+x+x+x,+x+x+x,+x+x+x,...............−x-x−x,−x-x−x,−x-x−x,−x-x−x,...............+x+x+x,+x+x+原创 2021-04-17 08:27:06 · 232 阅读 · 0 评论 -
[hdu3440]House Man
House Man题解很经典的一道差分约束的题目。我们现在有两个约束条件:相邻两点的距离大于1。 两个高度紧挨着的点的距离不超过d。(注意,两个高度相邻的点之间如果有一个更高的他会直接跳过这个更高的,一脸懵*)于是我们就得到了两个约束条件,设表示第个点的位置,表示第高的点的编号。,。根据这两个条件差分约束建图,跑一遍spfa,注意判负环。源码#include<cstdio>#include<cmath>#include<cstring&原创 2020-09-22 21:54:20 · 167 阅读 · 0 评论 -
1-11G. JM的月亮神树
1-11G. JM的月亮神树题解定义:一个图的不科学生成树是的一棵子树,在这棵子树上,从核心节点到任意一个节点的最短路径长度,和在原图上是等长的。其中节点是月亮神树的核心节点。根据定义很容易发现,这棵树是由核心节点到其它任意一个节点的最短路所构成的。所以,我们可以先用Dijkstra将所有最短路给跑出来。再根据每条边的编号当作权值对所有的最短路进行更新。不过如果将所有最短路的边记录下来跑最小生成树的话不能保证到每个点的路径都是最短路,所以会出现WA的情况。源码#includ原创 2020-08-25 16:57:21 · 305 阅读 · 0 评论 -
[CF786B]Legacy
Legacy题解看到题目应该是容易想到最短路的,但是由于区间到单点与单点到区间的边我们需要想些办法来维护。于是,我们就想到了通过虚点来进行维护。但总不能每个区间都建一个点,只能利用线段树来对各个区间的虚点进行维护。针对一个区间需要建两个点,一个入点,一个出点。将大区间与小区间连上边,出边从下往上,入边从上往下,其边权都是0。由于大小区间内已经连了边,再加上最短路的性质,懒标记什么的就没必要了。最后建完边后再去跑一边Dijkstra即可,注意需要加堆优化。由于,边数应该不超过,总时间复原创 2020-08-23 16:10:20 · 167 阅读 · 0 评论 -
[CF416E]President‘s Path
President's Path题解看到应该就很容易想到Floyed。我们可以先通过Floyed求出最短路,对于一个点,如果它在最短路上,则一定可以作为拆分点更新这条路径。如果暴力枚举所有点与边时会T的,由于对于一个点与它相接的最多只有条边,我们可以考虑从这方面优化。对于每个点,我们可以先算出它到某个点时需要使用的边,最后枚举拆分点时将它加上即可。时间复杂度。源码#include<bits/stdc++.h>using namespace std;#defi原创 2020-08-23 15:16:55 · 140 阅读 · 0 评论 -
[CF1051F]The Shortest Statement
The Shortest Statement题解看到此题应该很容易想到最短路,但是由于,肯定不能直接跑最短路。但是我们很快就发现了一个奇怪的数据范围,。这说明,在构成一棵生成树后,剩下来的边不会超过21条。而我们将一条边插入在树上后会构成一棵基环树,而将其环上的一条边去掉便会形成一棵新树。我们发现,将一个点到其它点的最短路径标出来后一定会形成一棵新的生成树,而路径肯定是其树上的一条路径。当然不可能把全部树建出来跑,不说时间,空间都会炸。但我们发现,我们其实还是可以先建一棵树出来,原创 2020-08-23 14:46:52 · 131 阅读 · 0 评论 -
[SDOI2017]天才黑客
天才黑客题解貌似挺简单的一道dijkstra其实到最后发现就是建图跑一次dijk,就是建图有些恶心而已。我们发现这道题本质上就是一个找最短路,关于每条边的距离它给了一个trie树来形容。由于每条边的长度会受到它当前所带的字符串的影响,所以我们就顺理成章的想到了拆点。明显不能把一个点拆成它所有的入边个点,看了看数据范围,空间炸了。于是我们考虑另一种建图方式,来拆边:我...原创 2020-01-17 23:25:13 · 243 阅读 · 0 评论 -
Star Way To Heaven
Star Way To Heaven题解 我们如果不能通过这个长方形,则各个引力带肯定可以形成一条从0到m的链,我们只需要求出从0到m的路径上最长的一条边即可。源码#include<cstdio>#include<cmath>#include<cstring>#include<iostream> #include...原创 2019-10-28 18:46:01 · 389 阅读 · 0 评论 -
Slow Path Finding Algorithm
题解本题使笔者认识到了memset导致超时的痛苦。本题只需要打一个简单的最短路即可,每次将入度为0的点加入队列,去掉与它相连的边,并更新最小值,记住别打memset,这道题专门卡memset。源码#include<cstdio>#include<cstring>#include<cmath>#include<iostream...原创 2019-11-07 16:10:21 · 168 阅读 · 0 评论 -
十二桥问题
十二桥问题题解笔者最开始没看见(k<=12),明明题名都给得如此清楚了,。好了,回到正题,k如此的小,我们可以考虑一下状压dp,方程式也很好想,根据每一条边去推就好了。问题是如果每次需要用两个端点距离时都去找一遍的话很有可能炸,我们可以考虑在开始时将所有端点都SPFA一遍,加上1,最多也只会SPFA25次。有的大佬优化到了13次,如Indra,具体说就是将每条边的中点为单位,去SPF...原创 2019-11-08 20:37:09 · 297 阅读 · 0 评论 -
现代豪宅
现代豪宅题解我们可以将每个有开关的点与起点终点离散化,再分别将每个点横向与竖向建成虚点,表示方向的转换,之间连接距离为1,把每行与每列的点用之间的差值作距离连接,建成一张图,跑一遍dijkstra即可。源码#include<cstdio>#include<cstring>#include<cmath>#include<iostrea...原创 2019-11-13 21:11:57 · 201 阅读 · 0 评论