图论-最短路
Endless_Way
这个作者很懒,什么都没留下…
展开
-
POJ 2449 Remmarguts' Date
A*模板题#include<cstdio> #include<queue> #include<cstring> #define MAXN 1005 #define MAXM 100005 using namespace std; struct edge{int next,to,val;}e[MAXM<<1]; bool vis[MAXN]; int cnt_edge=0, cnt[MAXN], la原创 2016-08-07 16:15:25 · 226 阅读 · 0 评论 -
UOJ 111 & BZOJ 4070 [Apio2015]雅加达的摩天楼
分块+最短路我们把一个(有doge的)点连向所有它能到达的所有点,这样就是一个最短路问题。考虑优化建图,用分块。如果pp大于n‾√\sqrt n就直接连。小于n‾√\sqrt n的情况?其实有一个性质,对于一系列有相同pp的点i<j<ki<j<k,如果ii能到达kk,jj能到达kk,那只要连上(i,j)(i,j)和(j,k)(j,k) 而不连(i,k)(i,k)即可。也就是说在pp相同的情况下,一个原创 2017-05-03 22:33:00 · 473 阅读 · 0 评论 -
BZOJ 2118 墨墨的等式
模意义下最短路挂题解 http://blog.csdn.net/PoPoQQQ/article/details/46605701#include<cstdio> #include<cstring> #include<queue> #include<algorithm> #define N 500005 #define M 14 using namespace std; namespace runz原创 2017-03-06 17:17:34 · 310 阅读 · 0 评论 -
BZOJ 3597 [Scoi2014]方伯伯运椰子
01分数规划+判负环看到分数就直接上分数规划嘛……瞎推一下式子就行了。大半夜做题好困啊,把from打成flow差点没看出来……感觉身体被掏空,明天早上还有训练,赶快睡觉,就不写具体的题解了。滚去睡觉2333#include<cstdio> #include<cstring> #define N 10005 using namespace std; namespace runzhe2000 {原创 2017-03-19 00:32:30 · 392 阅读 · 0 评论 -
BZOJ 4239 巴士走读
最短路和正解的做法不一样,不过都是 O((q+n)logm)O((q+n) logm )的。我的做法:最短路。把巴士看成点,并拆成入点和出点,边权为y-x(走它的意义是坐了这个巴士)。对于每一个原图的点u,把所有从这里出去的巴士按x排序,x小的前一辆i-1的入点向后一辆i的入点连边,边权x[i]-x[i-1](走它的意义是去考虑坐i号巴士并消耗等车时间)。把每一辆进入u的巴士的出点连向所有离开u的巴原创 2017-01-30 23:15:14 · 531 阅读 · 0 评论 -
CF 238E Meeting Her
最短路+搜索本题考察搜索的奇技淫巧,让我口胡一下先floyd把最短路跑出来。维护an[i]表示在i处且不在任何车上,到b的最少次数,那么最终答案是an[a]。正推无法更新答案,因为可能出现循环更新,我们考虑从终点逆推更新答案。初始设an[b] = 0。然后我们O(n^2)地暴力枚举每一条车的线路+暴力枚举每一个站点,O(n)dfs来找出所有an[i] = 1的站点。然后继续暴力算出所有an[i] =原创 2017-01-26 22:36:57 · 375 阅读 · 0 评论 -
UOJ 184 [ZJOI2016]旅行者
离线分治,最短路这一篇说得很清楚了,时间复杂度也有分析: http://blog.csdn.net/neither_nor/article/details/51733997UOJ上的点实在是恶心。普通最短路不能过,发现每一次分治下去要连续跑最短路,前一次最短路的结果可以帮助下一次。然后套上堆优化dijkstra可卡过。听说用SPFA+SLF,LLL也可过?BZOJ网站昨天就挂了,有空再上去交一下4原创 2016-10-04 14:35:10 · 359 阅读 · 0 评论 -
BZOJ 2725 [Violet 6]故乡的梦
堆优dijkstra+线段树膜:http://blog.csdn.net/popoqqq/article/details/47841783为了表达清楚,记不删边时最短路为E1,删去某一条E1上的边之后的最短路为E2显然E2一定是形如:S->沿着E1走到某一个在E1上点的S’->沿着不属于E1的一些边走到某一在E1上点的T’->沿着E1走到T而且可以证明,上面提到的E2中不属于E1的那些边(组成一条路原创 2016-10-15 14:01:04 · 573 阅读 · 0 评论 -
BZOJ 2125 最短路
树剖LCA+SPFA+tarjan找简单环静态仙人掌最短路没啥好说的,要分类讨论,细节要处理清楚…(我这个SB细节没弄好WA飞了) 膜:http://blog.csdn.net/popoqqq/article/details/43876907#include<cstdio> #include<queue> #include<cstring> #define cmin(u,v) (u)>(v)?(u原创 2016-10-15 11:00:14 · 393 阅读 · 0 评论 -
BZOJ 1975 [Sdoi2010]魔法猪学院
A*#include<cstdio> #define N 5005 #define M 200005 using namespace std; struct edge{int next, to; double val;}e[M<<1]; struct node{int id; double g, h;}heap[2000000]; int ecnt=1, ans=0, last1[N], last2原创 2016-09-25 13:30:55 · 355 阅读 · 0 评论 -
BZOJ 1001 [BeiJing2006]狼抓兔子
平面图最小割转对偶图最短路。第一眼看到这题,显然是最小割嘛。。。根据最大流最小割定理,跑一遍最大流即可,但复杂度O(n2∗m)O(n^2*m),显然要T啊。然后我就学习了平面图最小割转对偶图最短路的想法,看完就会做了,资料传送门:两极相通——浅析最大最小定理在信息学竞赛中的应用这里顺便摘抄一些平面图的重要定义和性质,详细内容看资料: ·平面图:若图G可画在平面上,使得任意两条边都不会在非端点处相原创 2016-08-14 15:01:33 · 591 阅读 · 2 评论 -
UOJ 19 [NOIP2014]寻找道路
图的遍历+最短路。第一眼看,好难,不会做。仔细一看,发现只要一次反向边BFS把不合题意的点全部丢掉就可以直接跑最短路了- -顺利打完之后被hack成97分,原因是没有判断起点直接不可取的情况。改后AC。#include<cstdio> #include<queue> #include<cstring> #define N 10005 #define M 200005 using namespace原创 2016-08-29 18:12:37 · 483 阅读 · 0 评论 -
BZOJ 5109 [CodePlus 2017]大吉大利,晚上吃鸡!
最短路+bitset+DP 个人觉得这题的思路非常高妙。 首先肯定是要建出最短路DAG,这个图上任意一条路径都对应一条原图的最短路。 如果一个点a在S到T的必经之路上,那就会有 S到a的方案数 * a到T的方案数 = S到T的方案数 这个东西显然是充要的,这是一个巧妙的转化。套用这个想法,这题要求选出两个点,那就只需 S到a的方案数 * a到T的方案数 + S到b的方案数 * b到T的...原创 2018-08-19 00:22:49 · 312 阅读 · 0 评论