最短路
_beginend
这个作者很懒,什么都没留下…
展开
-
可持久化可并堆优化k短路
问题对于带权有向图,定义路径的长度为经过的边的权值之和。两条路径不同当且仅当经过边的顺序不同。给一个带权有向图 GGG 以及起点和终点 s,ts,ts,t,求 GGG 中 sss 到 ttt 权值前 kkk 小的路径。朴素做法问题转化定义 disxdis_xdisx 表示从 xxx 到 ttt 的最短路长度,权值为 www 的边 e:u→ve:u\to ve:u→v 的花费 δ(e)=disv−disu+w\delta(e)=dis_v-dis_u+wδ(e)=disv−disu+w可以理解原创 2021-02-13 12:29:02 · 516 阅读 · 0 评论 -
【2019 CCPC 哈尔滨站 H. Highway Buses】【点分树+最短路】
题意题目链接有一个nnn个点mmm条边的无向连通图,从每个点出发有一个花费cic_ici和限制距离fif_ifi,表示可以通过cic_ici的花费到达与它最短距离不超过fif_ifi的点。有TTT个时刻,每过一个时刻点iii的花费要加上wiw_iwi。对k=1,...,nk=1,...,nk=1,...,n,求选择某一个时刻并从111出发,走到点kkk的最小花费。n≤200000,...原创 2019-11-10 23:46:18 · 378 阅读 · 0 评论 -
Codeforces 718E Matvey's Birthday bfs
题意给一个长度为n的字符串s,字符集大小为m。 再建立一张n个点的图,其中串中第i个字符就对应图中第i个点。 对这张图连这样两种边: 若对于i,j,满足|i-j|<=1,在点i和点j之间连双向边。 若对于i,j,满足s[i]=s[j],在点i和点j之间连双向边。 定义dis[i,j]表示点i和点j之间的最短路长度。 定义图的直径为max(dis[i,j]),求该图的直径和有多...原创 2018-03-06 11:13:53 · 385 阅读 · 0 评论 -
bzoj 3482: [COCI2013]hiperprostor 分层图最短路+凸包
题意在遥远的未来,行星之间的食品运输将依靠单向的贸易路线。每条路径直接连接两个行星,且其运输时间是已知的。贸易商协会打算利用一项最近发现的新技术——超空间旅行,以增加一些新的航线。通过超空间旅行的航线也是单向的。由于该项技术仍处于试验阶段,超空间旅行的时间目前是未知的,但它不取决于行星之间的距离,所以每个超空间旅行的路线将花费等量的时间。下图是三个相互联通的行星及其运输时间的例子。行星使用正整数标号原创 2018-01-04 08:21:08 · 401 阅读 · 0 评论 -
bzoj 2750: [HAOI2012]Road 最短路+dp
题意C国有n座城市,城市之间通过m条单向道路连接。一条路径被称为最短路,当且仅当不存在从它的起点到终点的另外一条路径总长度比它小。两条最短路不同,当且仅当它们包含的道路序列不同。我们需要对每条道路的重要性进行评估,评估方式为计算有多少条不同的最短路经过该道路。现在,这个任务交给了你。 n≤1500、m≤5000、w≤10000,答案模1e9+7。分析sb题。枚举起点跑最短路,然后把最短路DAG建出原创 2017-12-07 21:41:34 · 478 阅读 · 0 评论 -
bzoj 2662: [BeiJing wc2012]冻结 分层图最短路
题意给出一个无向图,有k次机会可以使某条边的长度减半,一条边只能减一次,问1到n的最短路。 n,k<=50,m<=1000分析调一道sb题调了快半小时,最后发现是数组开小了。这是预示着我noip要滚粗了吗?代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#in原创 2017-11-10 15:47:53 · 293 阅读 · 0 评论 -
bzoj 4016: [FJOI2014]最短路径树问题 最短路+点分治
题意给一个包含n个点,m条边的无向连通图。从顶点1出发,往其余所有点分别走一次并返回。 往某一个点走时,选择总长度最短的路径走。若有多条长度最短的路径,则选择经过的顶点序列字典序最小的那条路径(如路径A为1,32,11,路径B为1,3,2,11,路径B字典序较小。注意是序列的字典序的最小,而非路径中节点编号相连的字符串字典序最小)。到达该点后按原路返回,然后往其他点走,直到所有点都走过。 可以知原创 2017-10-18 20:53:03 · 1068 阅读 · 0 评论 -
bzoj 2346: [Baltic 2011]Lamp spfa
题意2255是一个傻X,他连自己家灯不亮了都不知道。 某天TZ大神路过他家,发现了这一情况, 于是TZ开始行侠仗义了。 TZ发现是电路板的问题, 他打开了电路板,发现线路根本没有连上!! 于是他强大的脑力可以使某个格子上的线路从\变为/, 或者从/变为\。 2255不会电路(因为他什么都不会),但是他想知道TZ最少要用多少次脑力才能使他家的灯变亮。 如果无法变亮,输出“NO SOLU原创 2017-09-02 22:04:41 · 238 阅读 · 0 评论 -
bzoj 2725: [Violet 6]故乡的梦 堆优化Dijkstra+线段树
题意 分析我们可以先把原图的一条最短路找出来。假设询问一条不在最短路上的边,则答案就为最短路。现在考虑如果删掉一条最短路上的边(x,y)后的答案。 显然答案一定是s-s’-x-y-t’-t其中s’和t’是在最短路上的点,而x,y则不是。 对于每一个点x,求出fs[x]表示从s到x的最短路上,一定是s-s’-x的形式,其中的s’是多少。ft[x]表示从x到t的路径上的t’是多少。 那么对于原图原创 2017-09-24 20:34:07 · 713 阅读 · 0 评论 -
bzoj 5047: 空间传送装置 spfa
题意太空中一共有n座星球,它们之间可以通过空间传送装置进行转移。空间传送装置分为m种,第i种装置可以用4个参数a_i,b_i,c_i,d_i来描述。因为时空抖动的问题,在非整数时刻禁止使用空间传送装置。如果在整数s时刻使用装置,那么需要花费((a_i*s+b_i) mod c_i)+d_i单位时间才能完成传送。现在是s时刻,小Q位于1号星球,请写一个程序计算从1号星球到每个星球最少需要的时间。 2原创 2017-09-23 07:20:01 · 309 阅读 · 0 评论 -
51nod 1326 遥远的旅途 最短路建模
题意给出一个无向图,问从1到n是否存在一条长度为L的路径。 n,m<=50,1<=路径长度<=10000,L<=10^18分析考虑枚举起点的每一条出边,设其权值为w,那么我们把w*2当作模数,建立n*w*2个新点,dis[i,j]表示我走到点i路径权值模w*2等于j时的最短路径是多少,然后直接跑最短路。如果dis[n,L%(w*2)]<=L那么就表示一定可以找到一条长度为L的路径。代码#inclu原创 2017-08-12 21:44:40 · 588 阅读 · 0 评论 -
bzoj 4456: [Zjoi2016]旅行者 分治+最短路
题意小Y来到了一个新的城市旅行。她发现了这个城市的布局是网格状的,也就是有n条从东到西的道路和m条从南到北的道路,这些道路两两相交形成n×m个路口 (i,j)(1≤i≤n,1≤j≤m)。她发现不同的道路路况不同,所以通过不同的路口需要不同的时间。通过调查发现,从路口(i,j)到路口(i,j+1)需要时间 r(i,j),从路口(i,j)到路口(i+1,j)需要时间c(i,j)。注意这里的道路是双原创 2018-01-12 21:29:46 · 384 阅读 · 0 评论 -
bzoj 4912: [Sdoi2017]天才黑客 最短路+dfs序优化建图
题意SD0062号选手小Q同学为了偷到SDOI7012的试题,利用高超的黑客技术潜入了SDOI出题组的内联网的中央控制系统,然而这个内联网除了配备有中央控制系统,还为内联网中的每条单向网线设定了特殊的通信口令,这里通信口令是一个字符串,不同网线的口令可能不同。这让小Q同学感觉有些棘手, 不过这根本难不倒他,很快他就分析出了整个内联网的结构。 内联网中有n个节点(从1到n标号)和m条单向网线,原创 2018-01-08 14:37:26 · 374 阅读 · 0 评论 -
Codeforces 757F Team Rocket Rises Again 最短路+支配树
题意给一个n个点m条边的无向图和起点s,现在可以任意删掉一个除s以外的点,问最多有多少个点的最短路发生变化。 n<=200000,m<=300000分析我们先跑一遍最短路,把最短路DAG建出来。然后在上面建支配树,那么删掉一个节点的贡献就是支配树上该节点子树的大小。 由于是在DAG上建支配树,只要每次对所有前驱求一遍lca就好了。代码#include...原创 2018-03-07 10:55:30 · 318 阅读 · 0 评论 -
Codeforces 1163F Indecisive Taxi Fee 最短路树
题意给一个nnn个点mmm条边的无向图,边有边权。每次会改变一条边的边权,并询问111到nnn的最短路。询问之间独立。n,m,q≤200000n,m,q\le200000n,m,q≤200000分析这跟HNOI2014道路堵塞基本就是一个题。最短路分两种情况:经过修改的边和不经过修改的边。第一种情况可以通过预处理最短路直接得出,第二种情况相当于要求删掉一条边后从111到nnn的最短路。...原创 2019-07-19 21:03:51 · 360 阅读 · 0 评论 -
Codeforces 1149D Abandoning Roads 最短路
题意有一个nnn个点mmm条边的无向图,每条边的边权要么是aaa要么是bbb,满足a<ba<ba<b。对于每个点,求在该图的所有生成树中,从1号点开始,只走树边到达该点的距离最小值。n≤70,m≤200n\le 70,m\le200n≤70,m≤200分析由于一定要是最小生成树,所以边权为aaa的边的优先级大于边权为bbb的边。考虑先把aaa边连成的连通...原创 2019-07-19 09:46:00 · 189 阅读 · 0 评论 -
bzoj 5056: OI游戏 最短路+矩阵树定理
题意求一个带权无向图有多少不同的最短路树。 n≤50n≤50n\le50分析直接把最短路DAG建出来然后跑矩阵树定理就好了。代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm&g...原创 2018-05-24 08:44:59 · 224 阅读 · 0 评论 -
bzoj 4356: Ceoi2014 Wall 建图+最短路
题意给出一个N*M的网格图,有一些方格里面存在城市,其中首都位于网格图的左上角。你可以沿着网络的边界走,要求你走的路线是一个环并且所有城市都要被你走出来的环圈起来,即想从方格图的外面走到任意一个城市一定要和你走的路线相交。你沿着方格的边界走是需要费用的,不同的边界费用可能不同,求最小代价。1<=N,M<=400,走过边界的代价为正整数且不超过10^9分析首先有个结论,就...原创 2018-05-23 20:10:08 · 440 阅读 · 0 评论 -
LibreOJ #2574.「TJOI2018」智力竞赛 floyd+最小可重路径覆盖
题意给一个m个点的有向图,问能否用n+1条链来覆盖所有点。不能的话,问所有不能覆盖的点中,权值最小的点的权值最大是多少。 n≤50,m≤500n≤50,m≤500n\le50,m\le500分析一开始看成了每次选一个点,然后它能到达的所有点都会被覆盖,想了半天都不会做。如果有人会做请告诉我~ 先二分答案,然后就变成了最小可重路径覆盖问题。 对于不可重的最小路径覆盖问题,可以直接二...原创 2018-05-22 19:48:27 · 378 阅读 · 0 评论 -
bzoj 5154: [Tjoi2014]匹配 费用流+最短路
题意有N个单身的男孩和N个单身女孩,男孩i和女孩j在一起得到的幸福值为Hij。一个匹配即对这N个男孩女孩的安排:每个男孩恰好有一个女朋友,每个女孩恰好有一个男朋友。一个匹配的幸福值即这N对男女朋友的幸福值的和。经典的问题是计算幸福值最大的匹配,即完美匹配。然而完美匹配有时候并不唯一,你需要计算,对于所有的完美匹配,其交集是什么。 N ≤ 80分析先找到某个最大权匹配,然后枚举每条...原创 2018-03-26 10:22:36 · 181 阅读 · 0 评论 -
Codeforces 464E The Classic Problem 最短路+可持久化线段树+hash
题意有一个n个点m条边的无向图,每条边形如(u,v,w),表示u到v有一条长为2w2w2^w的边,问两点间的最短路。 n,m,w≤105,n,m,w≤105,n,m,w\le10^5,分析直接上dij,考虑用可持久化线段树来维护到每一个点的最短路的01串。 如果要比较两个串的大小时,就对线段树每个节点维护一个hash值,然后找到从高位到低位的第一个不同位即可。 当要加入一个1...原创 2018-04-08 15:15:12 · 540 阅读 · 0 评论 -
bzoj 2007: [Noi2010]海拔 对偶图+最短路
题意不想讲。分析注意到最后一定是左上角全是0右下角全是1的形式,那么答案就是全图的最小割。转成对偶图之后跑一下最短路就好了。代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>...原创 2018-03-20 18:40:30 · 248 阅读 · 0 评论 -
bzoj 2118: 墨墨的等式 最短路建模
题意墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N、{an}、以及B的取值范围,求出有多少B可以使等式存在非负整数解。 N≤12,0≤ai≤5*10^5,1≤BMin≤BMax≤10^12。分析我们设a1表示a数组中最小的元素,dis[i]表示我通过使用若干个数,使得结果模a1=i,假设结果为x*a1+i,最小的x是多少。原创 2017-08-11 16:10:43 · 322 阅读 · 0 评论 -
bzoj 3597: [Scoi2014]方伯伯运椰子 spfa判负环+分数规划
题意给出一张每条边都是满流的残余网络,每条边都有容量,费用,扩容费用和缩容费用。要求在不改变总流量且每条边仍然为满流的前提下求最大平均费用减少。 n<=5000分析我们把这张图看做是费用流的残余网络,那么如果这不是最小费用流,那么必然可以找到从某一个点开始最后回到它自己的增广路。 由于这题是求平均,有一个显然的结论就是我们只用增广一个负环。可以先分数规划一下,那么问题就变成了新图中是否含有负环。原创 2017-07-21 16:39:56 · 323 阅读 · 0 评论 -
bzoj 4720: [Noip2016]换教室 期望dp+最短路
题意有v个教室和e条路径。有n个时刻,某个时刻i一开始在c[i]这个教室上课,可以申请换去课室d[i]上课,只能申请一次且成功率为p[i],最多申请m次,若时刻i在教室x上完课且下一时刻要到教室y上课则需要耗费dis[x,y]的时间。问如何分配申请使得期望耗费的时间最小。 v<=300,n,m<=2000分析考试的时候也有一些大概的思路,不过认为这样做太复杂了,就觉得是错的,然后就继续去推一些奇奇原创 2016-12-02 19:41:17 · 766 阅读 · 0 评论 -
bzoj 1266: [AHOI2006]上学路线route 最短路+网络流
题意给出一个n个点m条边的无向图,每一条边有一个长度t和权值c,问1到n的最短路,还有最少可以花费多少价值使得1到n的最短路边长。 n<=500分析第一问最短路直接上…… 第二问,我们可以把所有最短路上的边都加进来,那么问题就转换成了求一个最小割,直接上……代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstri原创 2016-11-15 20:55:07 · 425 阅读 · 0 评论 -
bzoj 1975: [Sdoi2010]魔法猪学院 k短路+A*
题意给出n个点m条有向边,求最多有多少条1到n的不同路径使得每条路劲的权值加起来不超过c。 n<=5000,m<=200000分析很显然题目是要我们找一个最大的k满足1到n前k短的路径和不超过c。 那么我们就要来求k短路。k短路用spfa来实现,每次在优先队列里面取一个估价函数f(i)=g(i)+h(i)的点出来去更新其他的点,若一个点第k次出队则这次必然是第k短路。g(i)表示的是1到i当前的原创 2016-11-14 14:15:57 · 365 阅读 · 0 评论 -
bzoj 2464: 中山市选[2009]小明的游戏 最短路
题意小明最近喜欢玩一个游戏。给定一个n * m的棋盘,上面有两种格子#和@。游戏的规则很简单:给定一个起始位置和一个目标位置,小明每一步能向上,下,左,右四个方向移动一格。如果移动到同一类型的格子,则费用是0,否则费用是1。请编程计算从起始位置移动到目标位置的最小花费。 n,m<=500分析刷水题有益与身心健康~~代码#include<iostream>#include<cstdio>#inc原创 2016-12-17 11:44:43 · 554 阅读 · 0 评论 -
bzoj 1880: [Sdoi2009]Elaxia的路线 最短路
题意给出一个无向图,求两个点对之间最短路的最长公共路径。分析先求出第一个点对之间的最短路上的所有边和第二个点对之间的最短路,然后dp一下即可。代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<queue>#define N 1505#defi原创 2017-02-13 19:42:35 · 323 阅读 · 0 评论 -
bzoj 3073: [Pa2011]Journeys 线段树优化建图+堆优化dij
题意Seter建造了一个很大的星球,他准备建造N个国家和无数双向道路。N个国家很快建造好了,用1..N编号,但是他发现道路实在太多了,他要一条条建简直是不可能的!于是他以如下方式建造道路:(a,b),(c,d)表示,对于任意两个国家x,y,如果a<=x<=b,c<=y<=d,那么在xy之间建造一条道路。Seter保证一条道路不会修建两次,也保证不会有一个国家与自己之间有道路。 Seter好不容易建原创 2017-04-17 17:12:03 · 889 阅读 · 0 评论 -
bzoj 2324: [ZJOI2011]营救皮卡丘 费用流,最小路径覆盖DAG
题意:给一个无向图,一开始有k个人在0点。在经过编号小的点之前不能经过编号更大的点,问最少走多少路才能使得至少有1人到达n点。n分析:一开始想的是动态加边和点,然后发现这样子会挂。其实可以先预处理出f[i,j]表示i走到j且不经过编号大于max(i,j)的点的最短路径。那么这样就变成了一个DAG。现在要求的是要用不超过不相交k条路径覆盖这个DAG且权值和最小。原创 2017-07-09 15:43:02 · 297 阅读 · 0 评论 -
bzoj 4144: [AMPPZ2014]Petrol spfa+最小生成树
题意给定一个n个点、m条边的带权无向图,其中有s个点是加油站。 每辆车都有一个油量上限b,即每次行走距离不能超过b,但在加油站可以补满。 q次询问,每次给出x,y,b,表示出发点是x,终点是y,油量上限为b,且保证x点和y点都是加油站,请回答能否从x走到y。 2<=s<=n<=200000,1<=m<=200000,1<=q<=200000分析感觉上比较巧妙的一道题(大爷们都说这是水题,可能是原创 2017-07-20 10:00:51 · 546 阅读 · 0 评论 -
bzoj 2407: 探险 最短路+构造
题意探险家小T好高兴!X国要举办一次溶洞探险比赛,获奖者将得到丰厚奖品哦!小T虽然对奖品不感兴趣,但是这个大振名声的机会当然不能错过! 比赛即将开始,工作人员说明了这次比赛的规则:每个溶洞和其他某些溶洞有暗道相连。两个溶洞之间可能有多条道路,也有可能没有,但没有一条暗道直接从自己连到自己。参赛者需要统一从一个大溶洞出发,并再次回到这个大溶洞。 如果就这么点限制,那么问题就太简单了,可是举办方又提原创 2017-07-15 19:28:00 · 468 阅读 · 0 评论 -
bzoj 2165: 大楼 倍增floyd
题意xz是一个旅游爱好者,这次他来到了一座新的城市。城市中央有一幢高耸入云的大楼。这幢楼到底有多少层呢?据说和非负整数的个数是一样多的。xz想爬上这座大楼来观赏新城市的全景。这幢大楼的楼层从下至上用从小到大的非负整数编号。每层楼有n个房间,用1到n的正整数编号。楼层之间用电梯连接,电梯只能上行,不能下行或者同层移动。(下楼一般自行解决)电梯用(u,v,w)的形式给出,表示对于任意正整数i,有第i层的原创 2017-06-05 21:38:47 · 562 阅读 · 0 评论 -
bzoj 1179: [Apio2009]Atm spfa+强连通分量
题意给一个有向图,给定起点,求一条路径(不一定是简单路径)使得经过的点的权值和最大(每个点只算一次),且要在给定的若干个点中选一个作为终点。 n,m<=500000分析我真的sb,居然没有一眼看出正解是啥。。。只要缩点一下然后直接spfa就好了。代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#in原创 2017-06-05 20:20:47 · 378 阅读 · 0 评论 -
bzoj 3875: [Ahoi2014]骑士游戏 spfa+dp
题意【故事背景】 长期的宅男生活中,JYY又挖掘出了一款RPG游戏。在这个游戏中JYY会 扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽。 【问题描述】 在这个游戏中,JYY一共有两种攻击方式,一种是普通攻击,一种是法术攻 击。两种攻击方式都会消耗JYY一些体力。采用普通攻击进攻怪兽并不能把怪兽彻底杀死,怪兽的尸体可以变出其他一些新的怪兽,注意一个怪兽可能经过若干次普通攻击后变回一原创 2017-05-24 20:13:38 · 301 阅读 · 0 评论 -
bzoj 3575: [Hnoi2014]道路堵塞 最短路
题意A国有N座城市,依次标为1到N。同时,在这N座城市间有M条单向道路,每条道路的长度是一个正整数。现在,A国交通部指定了一条从城市1到城市N的路径,并且保证这条路径的长度是所有从城市1到城市N的路径中最短的。不幸的是,因为从城市1到城市N旅行的人越来越多,这条由交通部指定的路径经常发生堵塞。现在A国想知道,这条路径中的任意一条道路无法通行时,由城市1到N的最短路径长度是多少。 2分析首先要知道最原创 2017-05-04 10:37:44 · 706 阅读 · 0 评论 -
bzoj 4070: [Apio2015]雅加达的摩天楼 最短路+分块
题意印尼首都雅加达市有 N 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 0 到 N−1。除了这 N 座摩天楼外,雅加达市没有其他摩天楼。 有 M 只叫做 “doge” 的神秘生物在雅加达市居住,它们的编号依次是 0 到 M−1。编号为 i 的 doge 最初居住于编号为 Bi 的摩天楼。每只 doge 都有一种神秘的力量,使它们能够在摩天楼之间跳跃,编号为 i 的 doge 的跳跃原创 2017-05-03 09:02:00 · 709 阅读 · 0 评论