P10053 [JOISC 2021 Day2] 逃走経路 题解
honglan0301 · · 题解
题目分析
记
-
当
f_{i,j}(x) 与x 不在同一天时,f_{i,j}(x) 是至多n 段的分段函数,因为这仅与出发那天能到达的城市集合有关。 -
否则,
g_{i,j}(x) 是至多m 段的分段函数,因为其仅与当天能够使用的边集有关。
于是我们只需要对两种情况分别处理:
-
首先对每个有序对
(i,j) 预处理出想在一天内从i 到j 的最晚出发时间t_{i,j} ,这可以通过建反图跑最短路实现(钦定在一天的末尾到达j 不影响结果)。然后再处理在一天起始时出发的全源最短路。对每个询问把两部分拼起来即可(答案就是
S-T_j+\min\{dis(i,v_j)\mid t_{u_j,i}\ge T_j\} )。 -
考虑将每条边
(A_i,B_i) 消失的时间C_i 作为关键时刻,以每个关键时刻作为出发时间跑出正反图上以B_i 为起点的最短路,然后拼起来分段取最小值就好。感性理解它挺对的,因为
g_{i,j} 的每个端点都代表着一次路径的改变,而路径发生改变当且仅当该路径上的一条边恰好在通过时消失,于是枚举每条“恰好要消失”的边应当具有正确性。
从每个步骤看,时间复杂度大概不超过
不过我是口胡选手,没有写代码,如果有锅请指出。