摘要: 后缀自动机维护子串公共后缀方便一点,所以直接倒序插入字符串即可。 我们给所有前缀打上标记,然后跑树形 \(dp\),设 \(sum_i\) 表示第 \(i\) 个点的子树内有多少个前缀,\(ans\) 统计 \(\sum \text{LCP}(T_i,T_j)\),则有: \[ans=\sum\li 阅读全文
posted @ 2024-07-10 10:22 长安一片月_22 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 讲一种自认为最暴力的方法。 首先肯定还是用差分的思想,对于每一张卡片进行重新标号,在卡片串与卡片串中插入特殊字符,然后找重复了 \(n\) 次的子串。 这里我们对于每一个子串开一个大小为 \(n\) 的标记,表示他在不在第 \(i\) 个卡片串里。 然而这样很明显容易 \(\text{MLE+TLE 阅读全文
posted @ 2024-07-10 09:33 长安一片月_22 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 所有子串,一眼 \(\text{SAM}\)。 从根开始一直往下走,走到任何一个点都代表一个子串。维护 \(sm\) 表示每个子串有几个(\(t=0\) 就当一个),可以用树形 \(dp\) 跳后缀链接树,然后暴力跑 \(\text{SAM}\) 即可。 当然我们发现这样时间复杂度会爆炸,因为第二部 阅读全文
posted @ 2024-07-10 08:09 长安一片月_22 阅读(1) 评论(0) 推荐(0) 编辑