1 条题解
-
0
题解
思路推导
一次操作能够从 到达 ,当且仅当原图中存在一条从 到 、长度恰为某个 的路径。可以先求出所有这种点对,再把它们看作新图中的一条边。问题就转化为新图中从 到 的最少边数。
设 表示原图中是否存在长度恰为 的路径。原图中的每条边对应 。一条长度为 的路径可以从中间切成两条长度为 的路径,因此可以通过枚举中点递推。
题目只允许总长度不超过 ,所以只需处理 。
做法
先把原图边写入 。对每个 ,枚举 ;若 与 都成立,则令 成立。
只要某个 成立,就在新图中加入从 到 的边,表示可以用一秒完成这段移动。最后在新图上从顶点 做 BFS,得到到顶点 的最少边数。
正确性证明
对 归纳。 时, 恰好表示原图中存在一条边,即存在长度为 的路径。
假设 的含义正确。若递推得到 ,则存在中点 ,使得 到 和 到 都有长度 的路径,连接后得到长度 的路径。反过来,任意长度 的路径在走完前 条边后到达某个中点 ,两半都会被 记录,故递推一定得到 。归纳成立。
因此新图中的每条边与一次合法的跑路器操作一一对应。新图中的一条从 到 的路径对应一系列合法操作,路径边数就是耗时;任何合法操作序列也对应新图中的同长路径。BFS 求得的最少边数即为最少秒数。
复杂度分析
共有 层可达关系,每层枚举三个顶点。预处理时间复杂度为 ,BFS 时间复杂度为 ;空间复杂度为 。
- 1
信息
- ID
- 1031
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者