Loading

AT_abc236_g

AT_abc236_g
方法一:整体二分
看见L的大小,就可以知道是矩阵快速幂了,难点在于不断加边的过程。
这种不断加边可以想到分段矩阵快速幂,但这题不是在某段时间加边,而是一开始改变图的结构,所以用不了。
显然正难则反也gg
考虑暴力,也就是每次都做一次,现在目标就是尽量减少做矩阵快速幂的次数,容易想到用二分。
但是对于每个点都做一次二分?显然会炸,由于在同一时刻,所有点可以共享一个矩阵,那么我们就把他们一起做。

具体的,假设当前时刻是mid,将此时转移矩阵整出来。假设点集合为S,求一遍矩阵快速幂。如果发现可以到达,将这个点扔到lt,反之扔到rt,那么对于所有lt中的点最早时刻都是[l,mid],rt同理。那么递归下去做即可。(好像这叫整体二分?)

时间复杂度\(O(nlogTn^3logq)\)虽然这个\(nlogT\)跑不满但是,仍然过不了一点,注意到这个&,|矩阵,所以可以用bitset优化,时间复杂度\(O(nlogT\frac{n^3}{w}logq)\)

方法二:时间戳建图法
由于是不断加边的过程,并且求最小时间,容易想到将时间变为一种代价。
具体的,我们将边权改为其出现时间,那么dp就是将dp_{i,j,l}表示从i走l步到j最大边权,显然用一个max-min矩阵即可解决
时间复杂度\(n^3logL\)
小结:从暴力出发,共享二分结果可用整体二分,不断加入,并且求最小时间,将时间变为一种代价

posted @ 2026-07-24 17:55  leaf_ydc  阅读(2)  评论(0)    收藏  举报