bzoj 3145 Str

SAM + dsu on tree.

枚举串 $A$ 和串 $B$ 模糊匹配的位置分别为 $i,j$ ,用 ${\rm LCS}(i-1,j-1)+{\rm LCP}(i+1,j+1)+1$ 更新答案.

直接这样做是 $O(n^2)​$ 的.

可以在后缀树上枚举节点 $x​$ 作为 $i-1,j-1​$ 在后缀树上的 LCA, 需要最大化 ${\rm LCP} (i+1,j+1)​$ .

将子树 $x​$ 内的点用 dsu on tree 加进来,每加入一个点时,用在前缀树上 dfs 序与它相邻的点更新答案.

于是做 dsu on tree 时,将点按照在前缀树上的 dfs 序作为权值插入到 set 中即可.

时间复杂度 $O(n\log^2n)$ .