
最短路
LowestJN
强省弱OIer
展开
-
[BZOJ4449][Neerc2015][分治][最短路]Distance on Triangulation
题意给定一个凸n边形,以及它的三角剖分。再给定q个询问,每个询问是一对凸多边行上的顶点(a,b),问点a最少经过多少条边(可以是多边形上的边,也可以是剖分上的边)可以到达点b。这道题刚了3个小时啊 然而因为一句swap没打只有45分……类似于zjoi2016的旅行者对于当前的图,找到一条边能够把图分成左右两半,比如图中2-5这条边 对于询问(x,y),若x在这条边的左边,y在这条边的右边,那么这原创 2017-03-06 20:42:34 · 1117 阅读 · 0 评论 -
[差分约束] Topcoder SRM553 Div1 Hard. YamanoteLine
可行的长度肯定是一个区间约束条件可以建城差分约束系统,那么判无解就是判是否有负环记一下负环上关于总长度的系数,二分就可以了#include <cstdio>#include <iostream>#include <algorithm>#include <vector>using namespace std;const i...原创 2018-03-07 13:23:13 · 558 阅读 · 0 评论 -
[分数规划 & FLOYD判正环] BZOJ4898[Apio2017] 商旅
答案是分数规划的形式二分答案 就是求∑wi∑ti≥x{\sum w_i\over \sum t_i}\ge x也就是∑wi−x⋅ti≥x\sum w_i-x\cdot t_i\ge x用floyd判是否有正环就可以了#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>using namespace原创 2018-01-02 17:58:23 · 527 阅读 · 0 评论 -
[传递闭包 BITSET] 「CodePlus 2017 11 月赛」大吉大利,晚上吃鸡!
建出最短路图—(以下复制自官方题解) 定义 F(X)=F(X) = 从 SS 到 XX 的方案数 ×\times 从 XX 到 TT 的方案数 = 从 SS 经过 XX 到达 TT 的方案数,所以满足条件的点对 A,BA,B 为:F(A)+F(B)=F(T)F(A) + F(B) = F(T) AA 和 BB 不能相互到达对于条件 11 ,我们可以使用数据结构进行优化(使用std::map即可原创 2017-11-27 19:31:03 · 1785 阅读 · 0 评论 -
[差分建图 最短路] BZOJ4289: PA2012. Tax
大概套路就是把边看作点边边之间连边的话边数会被卡成 O(n2)O(n^2)把边sort一遍,可以用前缀和优化建图但是这样常数有点大…反正我是卡完内存卡时间然后发现可以差分…对于一个点,一条无向边拆成两条有向边,那么进去的边与对应的出去的边连0的边。把边sort一边后,这条边向它后面的边连一条边权大小为他们的差值的边,向它前面的边连边权大小为0的边。然后跑最短路就好了#include <cstdio>原创 2017-11-25 17:29:32 · 646 阅读 · 0 评论 -
[最短路 杂题] LOJ#6075. 「2017 山东一轮集训 Day6」重建
刚开始以为可以二分…实际上是没有单峰性的。考虑每条边都加一个整数,那么肯定是使 ss 到 tt 的路劲经过的点变少。用DP算出经过 ii 个点到达 jj 的最短路,用 gi,jg_{i,j} 表示,以及只经过 ii 个关键点到达 jj 的最短路,用 fi,jf_{i,j}表示。如果经过 ii 个点不能到 jj ,那么 fi,j=inff_{i,j}=\inf 或 gi,j=infg_{i,j}=\i原创 2017-10-12 14:45:41 · 827 阅读 · 0 评论 -
[分治 Floyd] 计蒜之道2016复赛 .百度地图的实时路况
对 yy 分治假设处理到 [l,r][l,r] 区间,如果 l=rl=r ,n2n^2 扫一遍 disdis 数组记录答案。否则把 [l,mid][l,mid] 的边加入图中,递归做 [mid+1,r][mid+1,r],再把 [mid+1,r][mid+1,r] 的边加入图中,递归做 [l,mid][l,mid]#include <cstdio>#include <iostream>#inc原创 2017-10-20 21:11:01 · 669 阅读 · 0 评论 -
[k短路 && 可持久化堆]HDU5960.Subsequence
如果只求最大价值,显然可以DP fi,jf_{i,j} 表示前 ii 个点,最后一个点的颜色是 jj 的最大价值但是要求第k大的 把每个状态建成点,转移建成边,那么就构成一张图 求第k大就直接套可持久化堆的k短路算法就好了#include <cstdio>#include <iostream>#include <algorithm>#include <queue>#define fi原创 2017-09-27 13:35:33 · 1021 阅读 · 0 评论 -
[最短路 && 主席树维护HASH] 51nod1863 Travel
把一条路径上的点值按排名顺序排序,那么路径的优劣就是字典序。相当于是求一条字典序最大的路径。 最长路然后就是老套路,用主席树来维护hash,就可以在O(log)的时间里比较两个串的字典序,然后就套最短路就可以了用对优化的DIJ复杂度就是O((N+M)lognlogn)O((N+M)\log n\log n)#include <cstdio>#include <iostream>#include原创 2017-08-29 11:13:14 · 799 阅读 · 0 评论 -
[最短路 && 主席树维护HASH]Codeforces 464E. The Classic Problem
传送门 老套路 跟51nod1863一样。 就是多了进位#include <cstdio>#include <iostream>#include <algorithm>#include <set>#include <cstring>#include <string>#include <vector>#include <queue>#include <assert.h>#def原创 2017-08-29 11:16:46 · 484 阅读 · 0 评论 -
[分治最短路 && 树链剖分]Codechef September Challenge 2017 QGRID. Querying on a Grid
传送门 代码能力大屠杀系列 挺套路的题。 这个一个网格图,mm 只有3,那么第一想法就是对网格图分治。 对于分治到的区间 [l,r][l,r] ,令 mid=l+r2mid={l+r\over 2} ,就是中线。我们可以对中线上的 mm 个点各做一遍最短路,如果一个修改操作的两个点 x,yx,y 的最短路径在这个区间内,又跨越了中线,那么这个最短路径肯定要经过中线上的 mm 个点之一。所以我原创 2017-09-13 19:06:11 · 516 阅读 · 0 评论 -
[BZOJ3040][STL配对堆]最短路(road)
数据范围较大的最短路可以用pbds里的配对堆优化,可以O(1)插入,O(logn)修改#include <cstdio>#include <iostream>#include <algorithm>#include <ext/pb_ds/priority_queue.hpp>#define N 1000010#define M 10000010#define inf 1000000000原创 2017-03-21 23:19:43 · 1277 阅读 · 0 评论 -
[主席树优化建图] LOJ#546. 「LibreOJ β Round #7」网格图
最简单的思路是离散化后 O(k2)O(k2)O(k^2) 搞然而对于横着的朝向,极长的横着相连的格子的答案是相同的,竖着的同理那么把极长的相连的格子也缩起来,用主席树优化建图,就可以 O(klogk)O(klogk)O(k\log k) 最短路了#include <cstdio>#include <iostream>#include <algorit...原创 2018-02-25 21:17:16 · 633 阅读 · 0 评论