20260817 - 最短路
零、题目链接
一、比赛基本情况
- 比赛日期:2026 年 8 月 18 日
- 比赛时长:3 小时
- 比赛得分:5 分
- 比赛排名:第 13 名
二、比赛整体回顾
这场比赛我按照 C, F, A, G, E 的顺序做题。
由于 E 写太久了,所以没有时间写下面的题目了。
三、题目复盘
A - 路径统计
一个简单的最短路计数题,注意读题两个不同的最短路方案要求:路径长度相同(均为最短路长度)且最短路经过的点的编号序列不同。还有 Dijkstra 一定要判断是否访问过,否则会卡到 \(O(nm)\)。
B - Snaky Walk
一个简单的 BFS,记录三维 dis[x][y][f],\(f\) 代表是哪一种了。
C - Our clients, please wait a moment
建分层图,先分别考虑,然后从班车建有向图到火车。
D - Planets
在 Dijkstra 时记录一下时间就好了。
E - 最优贸易
思路就是枚举点,求返图到 \(x\) 的最大值减去正图到 \(x\) 的最小值。
为什么可以用 SPFA,\(O(nm)\) 最坏会爆的吧。
所以我们使用 Tarjan 缩点,把他变成一个 DAG,上面跑 DP,这样严格 \(O(n+m)\),常数很大。
F - Roadblocks G
次短路模版。
G - Moving Both Hands
转化一下题意,就是有两个人在图上走,找到一个点使得从 \(1\) 到 \(i\) 加上 \(n\) 到 \(i\) 的距离和最小。
可以用分层图。
H - Chamber of Secrets
转化一下题意,每次操作实际上是将行和列联通了,建图跑 BFS 就行了。
I - Bicycles
在 Dijkstra 的状态加一个当前速度就好了。
J - Swap Places
暴力 Dijkstra 就好了。
K - Rudolf and CodeVid-23
建一个图,点为 \(2^{10}\) 个,每次可以将结果连边。

浙公网安备 33010602011771号