提供一个逻辑顺畅的思路(然而做法相同的)。
手玩样例,Sample1 是 \(\texttt{ac}\to[\texttt{a}][\texttt{baba}]\) 与 \([\texttt{a}][\texttt{ba}]\)。很显然样例有分段性质,所以 DP,\(dp_{i,j}\) 表示 \(s_{1,2,\cdots,i}\) 与 \(t_{1,2,\cdots,j}\) 的最短祖先长度。
很 naive 地,\(dp_{i,j}=\min\{dp_{i_0,j_0}+1\}(\#)\),\(\#\) 满足 \((i_0,i-1)\) 与 \((j_0,j-1)\) 可以由同一个字符转换到。于是处理一下 \(\#\) 即可。
发现这件事情是 \([i,j]\) 能否由 \(C\) 得到,所以区间 DP,转移是平凡的。预处理后就做完了。
code,时间复杂度 \(O(n^4A)\),\(A=26\),常数很小。