最短路
Master.Yi
学习他人,提升自己;
提升自己,帮助他人。
展开
-
Djikstra解决带负权最短路
这篇blog讲得超好每个点设个势函数 hih_ihi,并令新图的边权 wi,j′=wi,j+hi−hjw'_{i,j}=w_{i,j}+h_i-h_jwi,j′=wi,j+hi−hj,要求 wi,j′≥0w'_{i,j}\ge 0wi,j′≥0原图 1→n1\to n1→n 的最短路等于新图 1→n1\to n1→n 的最短路减去 h1−hnh_1-h_nh1−hn如何维护 hih_ihi:对 hih_ihi 的要求是对于任意有流量的边 (i,j)(i,j)(i,j),hi+wi原创 2020-07-31 22:38:02 · 194 阅读 · 0 评论 -
k短路的可持久化可并堆做法
例题:洛谷P2483 【模板】k短路 / [SDOI2010]魔法猪学院俞鼎力神仙的PPT传统的 A∗A^*A∗ 算法在图为一个 nnn 元环的时候每次找一条路都要转整整一圈,复杂度会达到 O(nk)O(nk)O(nk)而可持久化可并堆的做法在找路径的时候与 nnn 无关,找到一条路的复杂度是 O(logk)O(\log k)O(logk)定义在一张有向带权图 GGG 中,从起点 sss 到终点 ttt 的不严格递增的第 kkk 短路的长度。两条路径不同定义为按顺序经过的边集不同。一些性质记原创 2020-07-14 19:09:03 · 929 阅读 · 2 评论 -
20200712模拟赛【删邻接边求最短路,积性函数求和转化,生成树】
T1题目描述题目分析最坏情况和最优决策的分析:uuu 点周围有断边,huh_uhu,表示断掉一条TTT到uuu最短路上uuu的邻接边后从 uuu 走到 TTT 的最短路。uuu 点周围没有断边,minfv+wu,v\min f_v+w_{u,v}minfv+wu,v所以 fu=max(hu,minfv+wu,v)f_u=\max (h_u,\min f_v+w_{u,v})fu=max(hu,minfv+wu,v)建出以 TTT 为根的最短路树,最坏情况下 huh_uh原创 2020-07-12 19:26:52 · 236 阅读 · 0 评论 -
NOI2019 弹跳【区间连边最短路问题】
题目描述:LOJ3159nnn个点,每个点有一个二维坐标,有mmm条边,每条边从一个点出发,可以走到坐标范围在一个矩形区域内的点,代价为tit_iti。求从1号点到其他点的最短路。n≤7∗104,m≤1.5∗105n\le7*10^4,m\le1.5*10^5n≤7∗104,m≤1.5∗105题目分析:提供两种做法。法一:优化建边如果问题是一维,容易想到线段树优化建边,二维就是二维线段树,然而空间是nlog2nn\log^2nnlog2n的。所以使用KD树。对一个矩形连边就是KD树上找矩原创 2020-06-05 22:20:38 · 321 阅读 · 0 评论 -
模拟赛20200221(zjx)【带删除线性基(线段树分治),不经过某条边的最短路(最短路树),嵌套for循环循环次数(拉格朗日插值)】
T1:题意:给出mmm个值在[0,232)[0,2^{32})[0,232)内的数,kkk次操作添加一个数或删除一个数,或询问某个xxx是否能被这些数异或得到。m,k≤105m,k\le10^5m,k≤105题解:线性基套个线段树分治即可。网上好像有基于线性基性质的神奇做法,不过复杂度似乎都是两个log。Code:#include<bits/stdc++.h>#defi...原创 2020-02-21 22:43:43 · 480 阅读 · 1 评论 -
洛谷P3783 [SDOI2017]天才黑客【前缀和/后缀和优化建图】
题目描述:n个点,m条单向边(可能有重边,自环),保证1号点可以到任意点,一棵大小为k的字典树,每条边对应一个字符串(字典树中的某个节点)和一个代价ci。从边u经过点x紧接着走边v会有额外代价|LCP(u对应的字符串,v对应的字符串)|,即u,v在字典树上的对应的点的lca的深度。求1号点走到2,3…n号点的最小代价。n,m≤50000,k≤20000n,m\le50000,k\le2000...原创 2020-01-15 22:53:48 · 397 阅读 · 0 评论 -
最小环 (OI-wiki笔记)
OI-wiki太强啦!!!补充:求经过x的最小环可以求不经过x下x邻接点中任意两点的最短距离,用floyd O(n3)O(n^3)O(n3)邻接点最短距离可以改为二进制分组后Dijkstra,O((n+m)logmlogn)O((n+m)\log m\log n)O((n+m)logmlogn),或者完全图O(n2logn)O(n^2\log n)O(n2logn)更好的方法是求以...原创 2019-12-17 12:10:49 · 620 阅读 · 0 评论 -
[GXOI/GZOI2019]旅行者【k点最短路最小值】
题目描述:n个点m条有向边,给定k个点,求两两最短路的最小值。n<=100000,m<=500000.题目分析:很棒的一道题。首先是比较正规的思路,按编号二进制分组跑最短路,一部分作为起点,另一部分作为终点。由于是有向图,二进制分组要分两遍。然后是比较容易想到但是很玄学的优化思路,就是在枚举每个点作起点跑最短路时只拓展在已经求出的答案范围内的点,并且在Dijkstra确定了...原创 2019-12-16 20:01:56 · 298 阅读 · 0 评论