随笔分类 - 字符串--后缀自动机
摘要:题意 给出一个长度为 $n$ 的字符串 $s[1]$,由小写字母组成。定义一个字符串序列 $s[1....k]$ ,满足性质:$s[i]$ 在 $s[i 1]$ $(i \ge 2)$ 中出现至少两次(位置可重叠),问最大的 $k$ 是多少,使得从 $s[1]$ 开始到 $s[k]$ 都满足这样一个
阅读全文
摘要:题意 给定一个长度为$n$的母串 $q$组询问 这个串可以旋转(就是把最后一位丢到最前面这样子) 问这个串以及其旋转的串在给定的串中出现了多少次 Sol 旋转就把它复制一遍接在后面 然后就在$sam$上匹配 跳$parent$树的父亲到最后一个长度大于等于询问串长 然后统计$size$ 防止重复算,
阅读全文
摘要:题目 "传送门" Sol 就是广义$sam$ 然后记录下每个状态属于哪些串,开$set$维护 $parent$树上启发式合并一下就好了 cpp include define RG register define IL inline define Fill(a, b) memset(a, b, siz
阅读全文
摘要:题面 "传送门" Sol 广义$sam$ 每个$sam$的状态开$set$记录属于哪些串 $parent$树上启发式合并$set$ 然后每个串就在上面走,通过不停地跳$parent$树的父亲节点保证大于等于$k$,贡献就是$len$
阅读全文
摘要:题面 "luogu不用权限" Sol $sa$的话就直接连在一起后缀排序就好了 $sam$就插入两次,贪心在上面走就好了
阅读全文
摘要:题面 "传送门" Sol 求多个串的不同子串的个数 广义后缀自动机 也就是可以表示所有的串的所有的后缀的自动机 那么每次建一个串后,另外一个串接在初始节点下面建就好了 叶子节点最多$20$个 那么对于每个叶子结点遍历一遍树建立$sam$ 注意回溯时要把$last$指回来 cpp include de
阅读全文
摘要:题面 "传送门" Sol 考虑求每个串在模板串中出现的次数 就在$sam$上走就行了,因为它的每一条路径都是它的一个子串 走到最后一个点,若匹配,那么它的答案就是$parent$树的这个点的子树大小 然后带修改就写个$LCT$维护$parent$树就好了 $LCT$维护子树信息,非常好写 cpp i
阅读全文
摘要:题面 "传送门" Sol $sam$ 求一个串的不重复的第$k$小子串很好办 如果可以相同 那么要算上每个点(前缀)的后缀的个数 那么就是这个$endpos(right)$集合的子串的出现次数 cpp include define IL inline define RG register defin
阅读全文
摘要:题面 第一行给定主串$(len define IL inline define RG register define Fill(a, b) memset(a, b, sizeof(a)) define File(a) freopen(a".in", "r", stdin), freopen(a".o
阅读全文
摘要:题面 "bzoj" Sol $sam$ 维护一下不同子串的个数就好了 开$map$
阅读全文
摘要:题面 字符串$ S $最多包含$ 25 $万个小写拉丁字母。我们将$ F(x) $定义为长度为$ x $的某些字符串出现在$ s $中的最大次数。例如,对于字符串$ “ababa”$,$F(3) $将为$ 2$,因为存在两次出现的字符串$ “aba”$。您的任务是为每个$ i $输出 $F(i)$,
阅读全文
摘要:题面 给定一些字符串,求出它们的最长公共子串 输入格式 输入至多 $10$ 行,每行包含不超过 $100000$个的小写字母,表示一个字符串 输出格式 一个数,最长公共子串的长度 若不存在最长公共子串,请输出 $0$ Sol 一个串建立$sam$ 每个串在上面匹配 每个点匹配的长度可以由后继转移过来
阅读全文
摘要:题面 输入$2$个长度不大于$250000$的字符串,输出这$2$个字符串的最长公共子串。如果没有公共子串则输出$0$ Sol 一个串建立$sam$ 另一个串在上面匹配 cpp include define IL inline define RG register define Fill(a, b)
阅读全文
摘要:题面 "luogu" Sol $sam$然后树形$DP$ ~~当时还不会拓扑排序的我~~ cpp include define IL inline define RG register define Fill(a, b) memset(a, b, sizeof(a)) using namespace
阅读全文
摘要:题面 给定一个串,每次询问$l~r$组成的子串的不同子串个数 串长$2000$ Sol 每个左端点建一个$sam$同时记录答案 cpp include define IL inline define RG register define Fill(a, b) memset(a, b, sizeof(
阅读全文
摘要:后缀自动姬 是什么? 博主不想写~~反正没人看~~ 直接去$hihocoder$ "概念1" "算法2" 模板 cpp include define IL inline define RG register define Fill(a, b) memset(a, b, sizeof(a)) usin
阅读全文
摘要:题面 "Bzoj" Sol 刚完品酒大会那道题后再看这道题发现这就是道$SB$题 后缀数组+并查集 按$height$从大到小做 $height$是两个相邻$rank$的后缀的$LCP$ 从大到小,那么每次合并$height$的两边的集合,同时记录答案 两边集合两两配对的$LCP$一定就是这个$he
阅读全文

浙公网安备 33010602011771号