[SNOI2020] 字符串

显然使用 SA。

我们想到把两个串拼在一起求 SA 可以方便地求跨越俩串的 lcp。

然后呢你发现等价于要给他们匹配然后要求 lcp 之和最大。

然后放 sa 上就是把 1 点和 2 点进行匹配,使得最小值的和最大。

一个native的想法是:注意到 [1,3],[2,4] 一定不如 [1,4], [2,3],于是考虑把2点倒过来贪心依次匹配。

然而这糖丸了,因为考虑你 [1,2],[3,4] 就显然比 [1,4],[3,2] 来的优的多。

你考虑直接像笛卡尔树一样分治,每次找最小值,然后你发现可以贪心的把左右多出来的东西直接连上,因为如果不连这个就一定会跨过更小的,不优。

posted @ 2026-04-11 19:23  Infter  阅读(2)  评论(0)    收藏  举报