
【算法】最短路
文章平均质量分 87
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ1003】【ZJOI2006】物流运输
【题目链接】点击打开链接【思路要点】显然,两次变换线路之间所走的路一定是所能走的最短路。记\(Cost_{i,j}\)表示第\(i\)天至第\(j\)天均能走的路中最短路的长度。那么可以设计简单DP,用\(F_{i}\)表示第一天到底\(i\)天的最小花费,那么显然有转移方程:$$F_{i}=min_{j=0}^{i-1}\{Cost_{j-1,i}原创 2018-01-12 11:32:29 · 450 阅读 · 0 评论 -
【AtCoder】AtCoder Grand Contest 036 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】 Triangle【思路要点】注意到对于任意一个格点三角形,我们都可以找到一个点,将其平移至原点处后,另外两个点在同一象限内,或在该象限相邻的坐标轴上。因此,可以不失一般性地假定一个点在 (0,0)(0,0)(0,0) 处。令另外两点的坐标为 (x,y),(a,b)(x,y),(a,b)(x,y),(a,b)...原创 2019-08-09 21:08:44 · 499 阅读 · 0 评论 -
【LOJ3159】「NOI2019」弹跳
【题目链接】点击打开链接【思路要点】考虑模拟最短路算法的过程,需要维护一个二维点集,支持矩形 chkminchkminchkmin ,询问全局最小值,单点删除,并且不能占用过多空间。显然可以用 KD−TreeKD-TreeKD−Tree 解决。时间复杂度 O(MN)O(M\sqrt{N})O(MN) ,空间复杂度 O(N)O(N)O(N) 。【代码】#includ...原创 2019-07-31 14:02:16 · 507 阅读 · 0 评论 -
【校内训练2019-07-09】探险队
【思路要点】考虑计算 fif_ifi 表示到达点 iii 后发现 iii 的一条邻边断开,最坏情况下到达 TTT 的的最短路。注意到图是无向图,可以从 TTT 出发建立一棵最短路树,则最坏情况显然是断开 iii 的父边的情况。枚举一条非树边 (x,y,w)(x,y,w)(x,y,w) ,则对于 x,yx,yx,y 路径上的一个非 Lca(x,y)Lca(x,y)Lca(x,y) 的点 ...原创 2019-07-09 14:23:05 · 401 阅读 · 0 评论 -
【CodeForces】CodeForces Round #562 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接【A】 Increasing by Modulo【思路要点】二分答案,贪心判断。时间复杂度 O(NLogM)O(NLogM)O(NLogM) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 3e5 + 5;t...原创 2019-05-28 15:13:38 · 452 阅读 · 0 评论 -
【AtCoder】ExaWizards 2019 题解
【比赛链接】点击打开链接【题解链接】点击打开链接**【A】**Regular Triangle【思路要点】判断是否 A=B=CA=B=CA=B=C 。时间复杂度 O(1)O(1)O(1) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 2e5 + 5;ty...原创 2019-03-31 11:21:18 · 742 阅读 · 0 评论 -
【校内训练2019-01-18】子序列
【思路要点】考虑删去最少的数使得异或和为 000 ,显然,我们不会删去两个相同的数,可以用最短路求解,记 distidist_idisti 表示使删除的数异或和为 iii 的最少步数。注意到 disti=O(LogA)dist_i=O(LogA)disti=O(LogA) ,可以用 FWTFWTFWT 优化转移。时间复杂度 O(ALog2A)O(ALog^2A)O(ALog2A) 。...原创 2019-01-18 13:06:32 · 237 阅读 · 0 评论 -
【CodeForces】CodeForces Round #406 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**Berzerk【思路要点】博弈搜索,将状态按先后手拆点,建出游戏图。若一个点存在出边指向必败态,则该点为必胜态。若一个点所有出边指向必胜态,则该点为必败态。不满足上述两点的点为平局态。用一个类似拓扑排序的过程实现即可。时间复杂度 O(N2)O(N^2)O(N2) 。【代码】#inclu...原创 2018-09-27 18:13:18 · 354 阅读 · 0 评论 -
【BZOJ5109】【CodePlus2017】大吉大利,晚上吃鸡!
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 50005#define INF 1e18#define P 1000000007template <typename T> void read(T &x) { x = 0; int...原创 2018-06-13 21:04:00 · 430 阅读 · 0 评论 -
【CodeForces】CodeForces Round #485 (Div. 1 + Div. 2) 题解
【比赛链接】Div. 1Div. 2【题解链接】点击打开链接【Div.2 A】Infinity Gauntlet【思路要点】按照题意模拟即可。时间复杂度\(O(NLogN)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;template <typename T> voi...原创 2018-06-05 15:43:52 · 659 阅读 · 0 评论 -
【BZOJ2125】最短路
【题目链接】点击打开链接【思路要点】建立圆方树,预处理根节点到每个圆点的最短路的长度\(dist_i\)。询问时分Lca为圆点和方点分别讨论。若Lca为圆点,那么答案就是\(dist_x+dist_y-2*dist_{Lca}\)。若Lca为方点,那么答案就是\(dist_x-dist_{tx}+dist_y-dist_{ty}+query(Lca,tx,ty)\)。其中\(tx\)、\(ty\)...原创 2018-05-20 13:38:16 · 499 阅读 · 0 评论 -
【CodeForces】CodeForces Round #483 (Div. 1 + Div. 2) 题解
【比赛链接】Div. 1Div. 2【题解链接】点击打开链接【Div.2 A】Game【思路要点】排序,取中位数为答案。时间复杂度\(O(NLogN)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;template <typename T> void chkmax(T ...原创 2018-05-17 14:30:35 · 342 阅读 · 0 评论 -
【BZOJ3875】【JSOI2014】骑士游戏
【题目链接】点击打开链接【思路要点】考虑类似于用类似Dijkstra算法的贪心过程确定消灭每个怪兽的最小花费。用一个堆维护当前的最小花费集合,每次找出堆顶元素,确定为最终最小花费,并用这个值更新其它相关的最小花费。时间复杂度\(O(NLogN)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 200...原创 2018-04-21 13:48:54 · 321 阅读 · 0 评论 -
【BZOJ4489】【JSOI2015】地铁线路
【题目链接】点击打开链接【思路要点】用字典树存储字符串,把字符串转化为整数。对于第一问,我们将站点向被经过的路线连边,边权为1,将路线向经过的站点连边,边权为0。计算\(S\)到\(T\)的最短路,即为第一问的答案,由于是0/1边权的最短路,我们可以用BFS实现。按照第一问处理出的最短路(就是从\(S\)到该路线的最短路)从短到长的顺序处理每一条路线。由于要求满足第一问的限制,对于每一条路线,我们...原创 2018-04-19 17:26:53 · 502 阅读 · 0 评论 -
【BZOJ2725】【Violet 6】故乡的梦
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 200005#define INF 1e18template <typename T> void read(T &x) { x = 0; int f = 1; char c = ge...原创 2018-04-22 15:21:29 · 368 阅读 · 0 评论 -
【LOJ3180】「IOI2019」天桥
【题目链接】点击打开链接【思路要点】类似于子任务 (2)(2)(2) 的解法,考虑找到一些关键点,向四个方向最近的点连边,并在这些点上运行最短路算法。首先考虑 s=0,t=N−1s=0,t=N-1s=0,t=N−1 的情况,此时初始和目标点均不严格在任意一座天桥的下方,不难证明,此时我们永远不会向左行走。考虑一座横坐标跨度为 [l,r][l,r][l,r] 的天桥会被如何经过...原创 2019-08-20 18:09:13 · 1503 阅读 · 0 评论