随笔分类 - 字符串--后缀数组
摘要:制胡窜考前总结 manacher算法 利用了回文串的对称性质,$O(n)$的时间复杂度就可以求出以每个点作为回文中心时最长回文串的长度 个人习惯$mc[]$的值为回文串长度,而不是回文串长度+1 代码: 常见用法是先求出$mc[]$,然后根据题目要求和其他数据结构和算法配合使用,也有直接用$mc[]
阅读全文
摘要:后缀树+虚树 做这道题我们需要知道这么几个东西 两个后缀的$lcp$就是其后缀树上的$lca$ 用一个字符串的反串建$sam$,其$parent$边就构成了原串的后缀树 这道题要求询问$k$个后缀两两之间$lcs$之和,转化到后缀树中就是问这$k$个点任意两个点$lca$处值相加 考虑树形$DP$,
阅读全文
摘要:这道题应该是后缀数组的套路题啊,把单词连接起来,中间用没有出现过且互不相同的字符来分隔开,求一下$height$数组。 对于一个单词来说,设单词长$len$,所在的后缀为$i$,如果某后缀$j$满足$lcp(i,j)==len$,则$j$的前缀与这个单词相等。因为和$i$的$lcp$大小是从$i$向
阅读全文
摘要:$\sum_{i include include include include include using namespace std; typedef long long ll; const int maxn=1e6+100; struct SA{ int sa[maxn],tp[maxn],r
阅读全文
摘要:后缀数组[学习笔记] 这几天打算系统地学习一下字符串有关的东西... 今天看了看国家集训队的论文,做了几道板子题,感觉还是很有收获的,也算稍微把后缀数组的坑填了一下吧。 倍增算法求SA数组 利用倍增的思想来求后缀数组。 方法大概就是用基数排序,第一次按照每个后缀开头的字符为关键字,排一遍序,得到第一
阅读全文

浙公网安备 33010602011771号