![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最短路
二分抄代码
去了18ec没资格去19ec的反向训练选手
展开
-
gym100959I Robots 2015-2016 Petrozavodsk Winter Training Camp, Makoto rng_58 Soejima Сontest 4
https://codeforces.com/gym/100959/对于每个机器人,我们都只记录上下左右可以激活它的最近的机器人是哪个,然后从那个连到他一条边,然后跑最短路就行了因为只能走直的,所以相当于是个网格图,那么对于一个可激活别人的机器人,如果i能激活j,j能激活k,i也能激活k的话,那么就只需要连i->j->k,没必要连i->k了,那么总边数最多4n#include<bits/stdc++.h>using namespace std;typedef原创 2021-04-12 16:13:27 · 464 阅读 · 0 评论 -
gym100753 M - Sums 同余最短路
https://codeforces.com/gym/100753/problem/M经典做过模板题想不起来https://blog.csdn.net/liufengwei1/article/details/103997675这题比那题更模板#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxl=5e4+10;const int inf=1e9+10;int n,m;原创 2021-03-21 23:26:24 · 172 阅读 · 0 评论 -
codeforces1442C Graph Transpositions
https://codeforces.com/contest/1442/problem/C第一遍优先距离,最远换20次,dij每次把距离最小的点拿出来跑,如果这之内就能到N,则直接求出了答案然后如果20次都不行,那么说明后面每多一次变换都肯定会超过大于实际走的路径长度之和,我们就分层走,走的过程中只能由上层拓展出来的点去更新下层新拓展出来的点,路径不记录转边的代价,只记录路径长度,最后第一次到达n就是最小值,然后再把已经转过的边的次数的代价全加上#include<bits/stdc++.原创 2020-11-05 21:26:14 · 123 阅读 · 0 评论 -
H. Delivery Route 2019 ICPC现场赛 并查集+dijstra
https://nanti.jisuanke.com/t/42388尝试写了一下spfa没加优化跑不过去,据说加了优化能过?艹这题也巨水去年没时间写了由于它说了如果存在单向边从u->v,那么一定无法从v->u,而由于只有单向边有负数,所以对于每一个双向边连起来的连通块内部,是不存在单向边的,那么单向边总是从一个连通块连向另一个连通块,于是就可以按照单向边来拓扑排序先把当前rudu为0的连通块拿出来用双向边跑一遍dij,然后用单向边去更新别的连通块中的点的最小dis,接着拓扑排序一原创 2020-10-23 01:25:06 · 162 阅读 · 0 评论 -
hdu6797 1007 Tokitsukaze and Rescue 2020杭电hdu多校第3场
这题k=5。。。所以直接dfs下去,每次spfa跑出一条最短路,然后枚举哪条边被删,然后dfs下一层就行了由于随机数据,所以每一层的最短路不会很长,spfa也可能比dijstra快,所以复杂度不会达到50^5这个上限#include<bits/stdc++.h>using namespace std;const int maxl=60;const int inf=2e9+10;int n,k,ans;int frm[maxl],dis[maxl];int f[max原创 2020-07-28 17:03:51 · 1408 阅读 · 0 评论 -
bzoj2118 墨墨的等式 同余最短路
https://www.lydsy.com/JudgeOnline/problem.php?id=2118由于Bmi,Bmx太大,背包显然是不行的我们考虑B对于a[1]取余,B=a[1]*x1+b(b=0,1,....a[1]-1)。那么我们只要知道对于每一个b,最小体积是多少时能到达它就行了,之后就可以通过不断加a[1]来得到其他值。那么我们对每一个b,连一条边到(b+a[1])...原创 2020-01-15 23:54:37 · 147 阅读 · 0 评论 -
codeforces 1272F Two Bracket Sequences
https://codeforces.com/contest/1272/problem/F3周没训练已经菜得完美融入分段了看见200就知道n^3,然后完全不知道怎么DP。。。。看了罗哥代码,发现他用了神奇的spfa直接设 当前匹配到 s串的前a,t串的前b,当前( 比 )多 v个即dp[a][b][v]这个情况的最小值是多少那么就可以用spfa的方式从0 0 0开始,每次取...原创 2019-12-13 00:02:17 · 285 阅读 · 0 评论 -
Holy Grail 2019南京网络赛
https://nanti.jisuanke.com/t/41305给定一个有向无负环图,然后告诉你要依次加6条边,要保证每次加边后无负环,求依次加边时保证当前边最小。由于题目保证有解,所以s->t的边时一定有t到s的通路,我们找到t到s的最短路,那么久可以知道s->t这条新加边的最小值#include<bits/stdc++.h>#define maxl ...原创 2019-09-01 22:54:36 · 131 阅读 · 0 评论 -
SCU 4444 Travel 2015四川省赛
考虑1-n之间有无实边,有实边我们要么直接走实边到n,要么全部走虚边到n,看哪个快,全部走虚边涉及到一个bfs的复杂度证明的问题,我们用一个链表来维护还有哪些点没有访问到,那么对于一个起点u,他对链表中的每一个v失配,都说明u,v之间存在一条实边,那么我们最多失配m次,所以复杂度是(m+n)logn的,logn是用set找是否失配的问题。如果1-n之间没有实边,要么走虚边直达,要么全部走实边,...原创 2019-08-29 09:22:28 · 109 阅读 · 0 评论 -
hdu6705 path 2019ccpc网络赛
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6705大概是这题的加强版,https://blog.csdn.net/liufengwei1/article/details/97191896就用node{u,v,id,l} 表示一条从u到v的长度为 l 的路径,编号为id(没加这个id之前因为插入set失败导致RE3发。然后我们只需要枚举从...原创 2019-08-23 22:57:21 · 199 阅读 · 0 评论 -
Mindis 2019百度之星初赛第一轮
由于矩形边界是算的,所以我们离散化的时候需要加点,用来表示相邻两个左边之间的区间,1是x=1,3是x=2,2就是numx[x=2]-numx[x=1],点是没有长度的,区间是有长度的。我们用差分来统计离散化后每个点被多少矩形所覆盖了,就能知道这个地方的速度,那么这里如果是个区间,那么时间就是区间长度/速度,否则时间就是0然后建图,跑dijkstra。#include<bits/...原创 2019-08-17 21:27:14 · 403 阅读 · 0 评论 -
csu8月月赛,csuoj1978
此题一开始WA了很久,之前NOIP2015的时候DAY1T2也是类似的题目,然而那是无向图找最小环,于是可以到过的点不经过,这里是有向图找乘积最小环,所以到过的点还是要经过,但每条边走一次就行了,还有一个要注意的地方是,如果即将到达的位置也在队列里,首先是对这个环进行记录,然而还必须继续到这个点,因为可能存在联环和环套环的情况,所以一次要把所有可能形成的环找干净,然而其实如果一个点在队列里面多原创 2017-08-12 15:59:03 · 310 阅读 · 0 评论 -
CSU1808
据说这道题比赛的时候好多人开个map然后莽过去了= =,我当时算复杂度发现莽完全会被卡= =,然后这场HNCPC2016打的巨捞。orz xkp考场上想出了边变成点跑最短路。qt说dls上次讲多校那个坐地铁的时候讲过这样的做法,不过那题我当时直接bfs加dfs过去了,因为换线的代价为1而这里是一个绝对值。我们考虑每一个点,他连了很多条边,我们把这些边按照ci排个序,变成c1.c2,c3,......原创 2018-08-29 22:13:38 · 194 阅读 · 0 评论 -
[NOIP2009][spfa]最优贸易
都7月份了,我连联赛题都想不出我真是可以滚粗了! 这道题就是对1一个正向spfa记录下到i时能买到的最小价格xiao[i],对n一个反向spfa, 记录下到i时能卖出的最小价格da[i],然后枚举1到n号节点寻找最大的差值。#include<cstdio>#include<cstring>#include<vector>#define maxl 100001using namespace原创 2015-07-08 22:10:18 · 1165 阅读 · 0 评论 -
ZOJ - 3820 B - Building Fire Stations
从一棵树取出两个点x1,x2,对于一个点x,dist[x]=min(dis[x1],dis[x2]),问这个dist[x]的最大值最小是多少。对于一个点,他的最远点之一是某一条树的直径的端点(因为求树的直径就是随便找一个点找到任意一个最远点,把他当树的直径的端点之一)那我们只要取出任意一条树的直径长度为a[0]放到a数组中,a[1]......a[a[0]],然后二分答案mid,那么取得点...原创 2018-11-25 14:35:20 · 178 阅读 · 0 评论 -
[Gym-101986F] [Problem F] 2017-2018 ACM-ICPC, Asia Tsukuba Regional Contest
先把1到2的最短路上的边全部标记上,标记一条边是否属于最短路,就是正着跑一遍最短路得到dis1,倒着跑一遍得到dis2,如果对于一条边u,v,c,dis1[u]+c+dis2[v]=dis1[2]那么就是最短路上的边了。对于最短路上的边,翻转他,如果他是桥,那么最短路一定会变长,如果不是,说明还有不经过这条边的最短路,那么最短路是不变的。对于不是最短路上的边,如果dis1[v]+c+dis...原创 2018-11-25 14:53:59 · 374 阅读 · 0 评论 -
bzoj1415 noi2005 聪聪和可可 期望
本来毫无思路,看到网上设了二维数组表示期望后,觉得很妙。设f[i][j]为聪聪在i,可可在j的聪聪吃到可可的时间期望。dis[i][j]==1 ||==2 时,f[i][j]=1 ,i==j 时,f[i][j]=0;由于聪聪能走2步,可可每次只能走一步,所以dis[i][j]一定是越来越小的。我们可以先处理出g[i][j]表示此时聪聪应该往哪走。最后就按照期望的定义求就行了。d...原创 2019-03-04 14:31:43 · 135 阅读 · 0 评论 -
codeforces #575 div3 1196F K-th Path
传送门:http://codeforces.com/problemset/problem/1196/F好不容易div3做出了最后一题,结果B题不知道WA哪了,巨惨,而且前期A题看不懂,B题WA,C题WA,排名巨低K只有400,那么我们一开始只需要加400条最小的边进图,那么涉及到的点最多就800.吧这些点拿出来在新建的图上跑spfa,跑出来所有的结果丢进ans数组里排序然后输出第k...原创 2019-07-25 00:45:22 · 240 阅读 · 0 评论 -
UVA - 11090
看到最小平均值,就想到二分之后去判断是否为负数。根据题目,用spfa来判断有无负环,判断的标准为一个点到达过n次以上。然而有个很严重的bug,现在还没想通,原来我用的是记录最大边长maxlen,然后r=maxlen+1,如果最后ans>maxlen-eps就证明没有路径,结果WA了1小时,看看网上代码,改成r=10000010,ans>10000000就输出没有路劲,最后就A了,这很不科学..原创 2017-08-11 18:32:37 · 263 阅读 · 0 评论