ull 哈希被卡了,没什么好说的。
首先发现如果 \(X\) 和 \(Y\) 有一样的部分,我们肯定是先将 \(X\) 缩成这个相同的部分,然后再扩展成 \(Y\),那么你肯定是选出两者的 LCS 最优对吧。思考一下此时有没有更优的可能性,你发现没有可能,因为需要将 \(X\) 中不同的部分给删掉再加上 \(Y\) 中的部分,这已经是理论最优了。
如果没有一样的部分,根据上述分析,则答案不会优于 \(|X| + |Y|\),由于我们不能全部删空再加,所以可能达不到这个下界,考虑最有方法,此时我的串越长越会制约我的扩展,因为我目前肯定是想要在原串中通过 \(X\) 操作成一个 \(Y\) 的子串,根据我们刚刚的分析,这个子串长度为 \(1\),也就是一个字符,那么接下来就是简单的连边跑 BFS 可以求得这一部分答案,因为肯定是 \(X\) 先删成一个字符,再通过这个字符转移成 \(Y\) 中的某个字符,形式确定了,那么答案就很好算了。