Loading

AT_arc151_e [ARC151E] Keep Being Substring

ull 哈希被卡了,没什么好说的。

首先发现如果 \(X\)\(Y\) 有一样的部分,我们肯定是先将 \(X\) 缩成这个相同的部分,然后再扩展成 \(Y\),那么你肯定是选出两者的 LCS 最优对吧。思考一下此时有没有更优的可能性,你发现没有可能,因为需要将 \(X\) 中不同的部分给删掉再加上 \(Y\) 中的部分,这已经是理论最优了。

如果没有一样的部分,根据上述分析,则答案不会优于 \(|X| + |Y|\),由于我们不能全部删空再加,所以可能达不到这个下界,考虑最有方法,此时我的串越长越会制约我的扩展,因为我目前肯定是想要在原串中通过 \(X\) 操作成一个 \(Y\) 的子串,根据我们刚刚的分析,这个子串长度为 \(1\),也就是一个字符,那么接下来就是简单的连边跑 BFS 可以求得这一部分答案,因为肯定是 \(X\) 先删成一个字符,再通过这个字符转移成 \(Y\) 中的某个字符,形式确定了,那么答案就很好算了。

posted @ 2026-01-21 17:25  Alexande  阅读(1)  评论(0)    收藏  举报