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

浙公网安备 33010602011771号