[USACO23DEC] Minimum Longest Trip G 题解
一看到 DAG 显然 topo 排序,最长路简单,但是这个字典序最小比较难搞,这里有两个方法。
-
对于这种字典序的问题,很容易想到哈希 LCP 二分来比较,而这里关键的是连值都存不下。
发现每一个点仅从前一个点转移过来,这是固定的,那这里是否可以使用倍增的思想来写就像树上求 LCA 一样来写呢?
当然可以,这里的倍增也可以作为我们 \(\log n\) 比较的方法。时间复杂度\(O(n+m)\log n)\)。
-
也可以”离线“来写(不知道应不应该这么说),先把最长距离 \(f_u\) 求出,我们先比较前一条边 \(l\) 再比较前驱(\(v\))在它所在的字符串长度的排名。
对于每一个 \(rk_u[f_u = x]\) 可以同理可以根据 \(rk_u[f_u = x-1]\) 算出 。时间复杂度 \(O(nm+n\log n)\)。

浙公网安备 33010602011771号