SAM + 矩阵快速幂 floyd.
考虑如果给出了串 $S$ ,如何算最小操作次数,将 $S$ 放到 $T$ 的 SAM 上去匹配,若没有出边则返回 $1$ ,且操作次数 $+1$ .
可以二分答案 $mid$ ,尝试检查用 $mid$ 次操作能构造出的串最小长度,若 $\le n$ ,说明答案 $\ge mid$ .
考虑如何求出用 $mid$ 次操作能构造的串的最小长度,其实转移只会出现在根节点的出边指向的点中.
bfs 预处理出它们之间的距离,即要加入多少个字符,对转移矩阵求 $mid$ 次幂即可得到用 $mid$ 次操作的最短距离.
时间复杂度 $O(|\sum|\cdot |T|+|\sum|^3\log^2 n)$ ,其中 $|\sum|$ 代表字符集大小.
1 | //%std |