LINK:Typewriter

好久没写SAM了 什么都给忘了.

写了大概2h.感觉被卡常还看了题解.

考虑dp 然后容易想到维护前面的一个j决策 尽可能小.

然后每次考虑向后加一个字符 不过不行就跳父亲.

我的做法是先建立SAM 然后每个点维护right集中最小的就可以维护决策了.

常数大的很.

考虑不这样做 边建SAM边做dp.

然后每次维护指针j 如果now接不上下个字符 j就向后移动.

注意跳父亲 值得注意的是跳父亲需要写while 大概是因为可能会分裂的缘故。

这个点在没分裂之前是可以直接跳到那个父亲的 分裂之后需要跳两次 而且此时要>=

这一点我始终没想到 最后才看出来 SAM还得多刷几道题来巩固一下 自己有的时候的思维漏洞.

05-27 00:21