[USACO23DEC] Minimum Longest Trip G 题解

一看到 DAG 显然 topo 排序,最长路简单,但是这个字典序最小比较难搞,这里有两个方法。

  1. 对于这种字典序的问题,很容易想到哈希 LCP 二分来比较,而这里关键的是连值都存不下。

    发现每一个点仅从前一个点转移过来,这是固定的,那这里是否可以使用倍增的思想来写就像树上求 LCA 一样来写呢?

    当然可以,这里的倍增也可以作为我们 \(\log n\) 比较的方法。时间复杂度\(O(n+m)\log n)\)

  2. 也可以”离线“来写(不知道应不应该这么说),先把最长距离 \(f_u\) 求出,我们先比较前一条边 \(l\) 再比较前驱(\(v\))在它所在的字符串长度的排名。

    对于每一个 \(rk_u[f_u = x]\) 可以同理可以根据 \(rk_u[f_u = x-1]\) 算出 。时间复杂度 \(O(nm+n\log n)\)

posted @ 2025-05-08 21:39  hnczy  阅读(26)  评论(0)    收藏  举报