摘要:"原题链接" 将每个城市拆成四个点,即四个机场来看,那么这题就是求最短路。 不过建图有些麻烦,先要找出第四个机场的坐标。 设另外三个机场的坐标为$(x_1, y_1), (x_2, y_2), (x_3, y_3)$,其中$(x_1, y_1), (x_3, y_3)$为对角线两点。 那么第四个点的
阅读全文
摘要:"BZOJ原题链接" "洛谷原题链接" 显然最长公共路径是最短路上的一条链。 我们可以把最短路经过的边看成有向边,那么组成的图就是一张$DAG$,这样题目要求的即是两张$DAG$重合部分中的最长链。 重合部分中的最长链可能是同向,可能是反向的,但不可能由反向边和同向边组成,否则就不是$DAG$了。
阅读全文
摘要:"原题链接" 写了这题才真正知道$Floyed$本质。 最原始的$Floyed$,$f[k][i][j]$表示的是以$i$为起点,$j$为终点,路径上的点的编号不超过$k$的最短距离。 所以这题的修复时间恰好就是$Floyed$中$k$这一维的递增转移,边询问边接着跑$Floyed$即可。 时间复杂
阅读全文
摘要:"1462原题链接" "1951原题链接" 显然答案有单调性,所以可以二分答案,用$SPFA$或$dijkstra$跑最短路来判断是否可行即可。 注意起点也要收费,$1462$数据较水,我一开始没判也过了,但重题$1951$把我卡掉了。。
阅读全文
摘要:"BZOJ原题链接" "洛谷原题链接" 贪心或树形$DP$都可做,但显然$DP$式子不好推~~(因为我太菜了)~~,所以我选择贪心。 很显然从根出发主干走最长链是最优的,而剩下的点每个都需要走两步,所以用除去走最长链的步数的剩余步数除$2$(下取整)就是剩余能走的点数。
阅读全文
摘要:"原题链接" 记忆化搜索。 先在反图上跑一边最短路,求出$dis[x]$,表示点$x$到点$n$的最短距离,当然也同时也排除了不能到达$n$的点。 设$f[x][k]$表示从$x$点走到$n$点允许比$dis[x]$多走$k$距离的方案数,$a_i$表示$x$能到达的点,且边权为$v_i$,共$s_
阅读全文
摘要:"原题链接" 模板题。 比起最短路计数( "题解" )这题多了边权,且计数的条件有所不同,需要去重边(取权值最小的),然后上$dijkstra$或$SPFA$计数即可。 这里我是用的$dijkstra$。
阅读全文
摘要:"原题链接" 模板题。 由于此题特殊,边权均为$1$,所以可以直接跑$BFS$,每个点的最短路就是该点在$BFS$搜索树中的深度,某个点的最短路计数则用上一层中能到达该点的计数来更新即可。 cpp include using namespace std; const int N = 1e6 + 10
阅读全文
摘要:"原题链接" 设某一趟车所停靠的车站的集合为$S = \{a_1,a_2,\dots, a_{k 1}, a_k\}$,那么对于一个车站$\forall x\in (a_1, a_k), \notin S$,向集合$S$中的每一个车站连一条边权为$1$的有向边,表示停靠的车站比未停靠高一级。 最后在
阅读全文
摘要:"BZOJ原题链接" "洛谷原题链接" 显然就是求最小割。 而对于一个平面图有结论,最大流=最小割=对偶图最短路。 所以这题可用最大流或是转换为对偶图求最短路,这里我是用的对偶图。 虽然理论上按上界算,这题$Dinic$应该是跑不过去的,不过因为网络流复杂度玄学,$Dinic$莫名跑得挺快的。 在转
阅读全文
摘要:"原题链接" 裸的差分约束。 1. $X_a X_b\geqslant C$ 2. $X_a X_b\leqslant C\Rightarrow X_b X_a\geqslant C$ 3. $X_a X_b\geqslant 0,X_b X_a\geqslant 0$ 并建立一个超级源点$0$,对
阅读全文
摘要:"原题链接" 显然一个强连通分量里所有草场都可以走到,所以先用$tarjan$找强连通并缩点。 对于缩点后的$DAG$,先复制一张新图出来,然后对于原图中的每条边的终点向新图中该边对应的那条边的起点连一条边,表示逆向走一次,且之后不会再逆向了。 最后在该图上跑$SPFA$求单源最长路即可。 cpp
阅读全文
摘要:一道最短路+生成树 "原题链接" 实际上就是生成树的中每个点到节点$1$的距离等于原图中这个点到节点$1$的最短距离,求这样的生成树的棵数。 先用$SPFA$或$Dijkstra$求出所有点到节点$1$的最短路径$dis[x]$,然后将所有节点按$dis$从小到大排序。 枚举$x$,表示已经有$x
阅读全文
摘要:最短路 "原题链接" 以$1$为起点在正图上跑$SPFA$或$Dijkstra$,求出$dis1[x]$,表示从$1$到节点$x$的所有路径中,经过权值最小的节点的权值;再以$n$为起点在 反图 上跑$SPFA$或$Dijkstra$,求出$dis2[x]$,表示从$n$到节点$x$的所有路径中,经
阅读全文
摘要:二分答案+单源最短路 "POJ原题链接" "洛谷原题链接" 显然可以二分答案,检验$mid$可以使用最短路来解决。 将大于$mid$的边看成长度为$1$的边,说明要使用免费升级服务,否则长度为$0$边,即不需要占免费的资格。 然后就可以在上面跑最短路,如果$dis[n] k$说明该答案不可行,将答案
阅读全文