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

浙公网安备 33010602011771号