摘要:
对于每个串,找到第一次匹配成功的位置 \(x\),然后求 \(S\) 上 \([1,x]\) 的后缀与 \(s\) 的 LCP 之和。 答案一定是 \(S\) 的子串,但是找到的匹配的位置一定是 \(s\) 的子串。 考虑对 \(s\) 建立 ACAM,然后把 \(S\) 丢上去匹配。记录一个下标就 阅读全文
摘要:
考虑哨卡将村庄分成了若干段,对每一段分别考虑。 我们先定义这个 swap 是有方向的,代价由我们制定的一个人来承担。 对于段内,将村庄分为三类:要去左边的段,要去右边的段,要留在这里。 在开始“正式移动”之前,我们可以对段内元素随意地移动,这样是不会有代价的。 将要去左边的村庄排在最左边,留在这里的 阅读全文