另外(不追求效率可以略过此段),由于 i+j 表示该方案与 A 第一个不同的位置(如果前 n 个字符与 A 相同有 i+j=n+1),只有 i+j 最小的方案是有用的,可以进一步加速。
这样求出了最优方案的最终串。此外,题目要求我们使得 j 最小,但在 SAM 上查出来的不一定是最小的。要将 B 尽可能向左移且不改变方案形成的最终串,有必要条件:左移的长度 len 一定是 B 的 period(周期,与 border 互补)的倍数,这很容易证明。所以倍增向左移就可以了。(写这篇题解时的数据很水,只判必要条件都能过)
最后总结一下:先对 A 建 SAM,枚举 (i,c),c>B_i,在 SAM 上查对应的一个 \operatorname{endpos},用哈希+二分找出最优方案,最后倍增向左移动 period 的整数倍。