
最短路
Lynstery
一只蒟蒻
展开
-
[最小割+对偶建图+最短路] BZOJ1001: [BeiJing2006]狼抓兔子
题意题解题意其实就是求最小割。但是发现点数和边数都特别大,直接上最大流肯定T了。那么如何转换呢? 对于可以画在一个平面且没有边相交的图,我们称之为平面图。平面图中的边把平面分割为一个一个面,本题的面即是一个个三角形。最外围的无穷大的面称为外部面。 所谓对偶建图即是把面当做节点,对于每条公共边界,对应的两个面之间连边。 对于最小割问题,我们就可以把S-T的一个割看成一条路径,其经过的边即是割掉的原创 2017-02-17 22:06:32 · 599 阅读 · 0 评论 -
[分治 + 最短路] BZOJ4456: [Zjoi2016]旅行者
题意给出一个n行m列的网格图,每个点与上下左右相邻4个点有双向边。 询问Q次,每次求两点最短路。 n*m<=20000,Q<=100000题解分治这个考虑方向还是容易想到的。 就是每次选长的那一边切成两半。 对于一个询问,若两点在异侧,则最短路一定经过中线。若两点在同侧,最短路可能经过中线。 以中线上的每个点为源点刷最短路,更新答案。 异侧的询问已经对了就不需要递归下去,其他的询问根据两原创 2017-06-05 21:32:42 · 534 阅读 · 0 评论 -
[最短路] 2017 计蒜之道 复赛 D. 百度地图导航
水题。就是建图需要优化一下,容易想到对与每个城市群建点,然后就把城市和对于群之间连边。为了避免属于同一个群的城市通过城市群的点走,可以把城市群的点拆成两个,对应出和入,就能分离开了。#include<cstdio>#include<cstring>#include<queue>#include<algorithm>using namespace std;typedef long long原创 2017-10-03 22:09:21 · 345 阅读 · 0 评论 -
[Johnson + 桶维护DIJ ] Codeforces #843D. Dynamic Shortest Path
这题用到了 JohnsonJohnson 算法的思想,就是先一趟最短路刷出 dis(i)dis(i) 然后把图改造。边 (x,y)(x,y) 的权改为 w(x,y)+dis(x)−dis(y)w(x,y)+dis(x)-dis(y)。 这样搞之后,边权都非负,再新图上做最短路的事情与原图是完全等价的,新图上从 11 到 vv 的某条路径的长度就是原图的对应长度与 dis(v)dis(v) 的差值。原创 2017-12-10 20:33:35 · 700 阅读 · 0 评论