随笔分类 -  图论--最短路

1
摘要:突然很想做POI。。 $n \leq 20000,m \leq 200000$的无向边权图无自环重边,问:从1出发到$n$,必须经过$2,3,...,k+1$,$k \leq 20$,且满足$q$个限制:在访问$x$后一定要访问$y$,$x,y<=k+1$,这样的最短路。 听说卡时间。我:???? 阅读全文
posted @ 2018-05-03 18:35 Blue233333 阅读(239) 评论(0) 推荐(0)
摘要:$n \leq 100000$个人,分糖,每个人都要有,$m \leq 100000$个条件,表示两个人糖要相等/大于/大于等于/小于/小于等于。问最少分多少糖。可能无解。 老把这东西忘了QAQ 差分约束,大小短,小大长。然后新开个点表示0,因为每个人都要有所以又加和0的$n$个条件。 阅读全文
posted @ 2018-04-23 18:51 Blue233333 阅读(125) 评论(0) 推荐(0)
摘要:$n \leq 100000$,$m \leq 500000$的有向图,两点之间还可以以$a \ \ xor \ \ b$的代价从$a$到$b$,问$s$到$t$的最短路。 被自己蠢哭QAQ 首先两个点之间不走给定的边,最短路一定是直接$s$到$t$,因为一个二进制的差异至少要被算一次。观察$s$到 阅读全文
posted @ 2018-04-02 19:42 Blue233333 阅读(531) 评论(0) 推荐(0)
摘要:$n \leq 2e5,m \leq 2e5,q \leq 2e5$,$n,m$的图给固定的$s,t$,以及$q$个询问,每次问删掉某条边之后问$s$到$t$的最短路。 首先喷一波,出题人语文太差了,这么美的题目居然潦草两句带过背景,描述题目也毫无趣味,差评!(本题分类:语文) 方法一:把图载到一个 阅读全文
posted @ 2018-03-08 11:19 Blue233333 阅读(382) 评论(0) 推荐(0)
摘要:n<=50000,m<=100000的图上,路径有属性Ai和Bi,问从1到n的路径中(Ai的最大值+Bi的最大值)的最小值。 双属性图论题,常用套路--定一动二。比如说这里可以先按A从小到大排序,然后依次加入图中来考虑怎么计算B。 方法一:哦,最大值最小,那不是最小生成树吗?会加边的图,那不是LCT 阅读全文
posted @ 2018-01-16 09:02 Blue233333 阅读(166) 评论(0) 推荐(0)
摘要:现有串x=11110000,y=11001100,z=10101010,通过这三个串只用与或非三种操作到达给定的串,优先级非>或>与,可以加括号,问表达式最短的里面字典序最小的是谁,有<=10000个询问。 一个串,经过某种变换,到达另一个串,这种转移关系用图论极其合适。那么问题就转化成了一个最短路 阅读全文
posted @ 2018-01-09 14:32 Blue233333 阅读(357) 评论(0) 推荐(0)
摘要:n<=50000,m<=50000的图,给s和t,问有多少点对$(a,b)$满足 嗯。 不会。 首先最短路DAG造出来,然后两个条件转述一下:条件一,$N_a$表示从s到t经过a的路径,$N_a+N_b=N_t$;条件二,在最短路DAG上A不能到B,B不能到A。 条件一就迪杰斯特拉的时候算一下N,注 阅读全文
posted @ 2017-12-28 18:57 Blue233333 阅读(505) 评论(0) 推荐(0)
摘要:n<=1000 * m<=1000的网格图(见下)问最小割。 emmm上论文 好东西 然而建边建错WA*3,调试忘删WA*1。 非常好。 1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include<stdlib. 阅读全文
posted @ 2017-12-22 21:54 Blue233333 阅读(200) 评论(0) 推荐(0)
摘要:n<=30 * m<=30 的地图上,0表示墙壁,1表示可以放箱子的空地。q<=500次询问,每次问:当空地上唯一没有放箱子的空格子在(ex,ey)时,把位于(sx,sy)的箱子移动到(tx,ty)的最小步数。 第一档:n<=10,m<=10,不加剪枝地乱搞?? 第二档:n<=30,m<=30,q< 阅读全文
posted @ 2017-11-02 10:23 Blue233333 阅读(357) 评论(0) 推荐(0)
摘要:n<=300个点的有向图求点数最少的负环。 先倍增,用floyd找到最少出现负环的走2^k的最短路,把倍增过程中那些图记下来。倍增floyd就跟矩阵快速幂一样的,因为:把floyd当成一次乘法,走一步的图*走一步的图=走两步的图,走两步的图*走两步的图=走四步的图…… 不过有个小问题,走3步出现负环 阅读全文
posted @ 2017-10-08 08:19 Blue233333 阅读(369) 评论(1) 推荐(1)
摘要:n<=100 * m<=100的地图,每个数绝对值不超过25,从1,1到n,m,一开始速度v,从数字A走到数字B速度会变成v*2^(A-B),求到终点最短时间。 可以发现,相同的数字出发的速度是一样的,和(1,1)位置的数的差做2的指数再乘v,而一个点只有四条边,跑个最短路即可。 然后n,m打反调了 阅读全文
posted @ 2017-09-19 13:41 Blue233333 阅读(271) 评论(0) 推荐(0)
摘要:最短路模板。选迪杰。 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #include<algorithm> 5 #include<queue> 6 //#include<iostream> 7 using namesp 阅读全文
posted @ 2017-09-14 21:12 Blue233333 阅读(242) 评论(0) 推荐(0)
摘要:n<=200个点m<=1500条无向带权边的图,每个点有人和容量,人可以移动,代价为所有人走过的边的权和,求使所有点人不超过容量的最小代价。 方法一:费用流。 错误!答案与边权不成比例。 方法二:二分一个答案,然后根据floyd求出的最短路看每个点在二分的答案下能去到哪些点,跑最大流检查是否合法。 阅读全文
posted @ 2017-09-14 19:10 Blue233333 阅读(246) 评论(0) 推荐(0)
摘要:n<=250个点m<=10000边无自环图,有点权边权,Q<=10000个询问i到j的最短路。这里的路径长度指路上边权和+路上点权最大值。 n这么小,询问这么多,那就跑跑floyd吧!f[i][j]记最短路,g[i][j]记最短路上最大点权,当f[i][j]+g[i][j]>f[i][k]+f[k] 阅读全文
posted @ 2017-08-30 13:43 Blue233333 阅读(197) 评论(0) 推荐(0)
摘要:n<=25000个点m1<=50000条正权无向边m2<=50000条正负权有向边,保证有向边连接的无向边联通块形成一个拓扑图,求从s到每个点最短路。 第一次发现不会最短路。没看题乱写迪杰无脑WA,很好。迪杰从来不能处理负权最短路,然后就开始啃题解。。http://www.cnblogs.com/s 阅读全文
posted @ 2017-08-29 22:07 Blue233333 阅读(261) 评论(0) 推荐(0)
摘要:n<=1000个数,从小到大,给m1<=10000条描述两个数相差不超过多少,m2<=10000条描述两个数相差至少多少,求1到n最大距离,无解-1无穷大-2。 裸的差分约束,spfa判负环。 差分约束口诀!大小短,小大长!(最大值,用≤式子,写最短路,后面同理) 1 #include<stdio. 阅读全文
posted @ 2017-08-28 18:39 Blue233333 阅读(152) 评论(0) 推荐(0)
摘要:n<=1000头牛各有一个未知值Ai,已知m<=10000条形如Ax>Ay的不等关系,求将整个序列排序的最少比较次数。 Aa>Ab,Ab>Ac > Aa>Ac,传递性,因此按m条不等关系连边建图,求出传递闭包,就是已知的关系。 求出传递闭包中的i≠j的0的个数即可。错误!连的图是有向图,而已知大于关 阅读全文
posted @ 2017-07-28 10:55 Blue233333 阅读(289) 评论(0) 推荐(0)
摘要:n<=100000个点m<=300000条边有权无向联通图,给出K<=10000个特殊点求K个点中任意两点最短路的最小值。 方法一:K小,随便搞。先构造最短路树,在最短路树上Dijkstra,遇到第一个特殊点就返回。代码如下: 如下个头。首先时间复杂度显然超了,其次建树时要考虑重边,比较难搞。 方法 阅读全文
posted @ 2017-07-27 17:26 Blue233333 阅读(172) 评论(0) 推荐(0)
摘要:n<=1000而m<=10000的DAG中求从n到1的前K<=100短路,不存在输出-1。 方法一:之前写过“第二短路”,比较2次;如果是要“前K短路”的话,dis需要是一个支持查找、插入(找到一个新的第u大,u<=K,需要插入u)、删除(插入后把最后一个删除)的东西,那就Treap或者Splay乱 阅读全文
posted @ 2017-07-26 17:15 Blue233333 阅读(292) 评论(0) 推荐(0)
摘要:一个编号在1000内的m条边的图,求从s到t恰好经过D条路径的最短路。 一开始什么想法都没有。。之前写过分层图套进去也怪怪的。。毕竟D<=10^6 苦思冥想睡了一觉后,还是没思路,查查题解,打开了新世界的大门 没有重边,提示我们构造邻接矩阵,最短路可以用floyd求出,但怎么用Floyd来“限边”? 阅读全文
posted @ 2017-07-13 17:56 Blue233333 阅读(144) 评论(0) 推荐(0)

1