随笔分类 -  字符串->后缀自动机

摘要:题目描述 题解: 广义$SAM$+倍增+线段树合并三连。 对于给出的$m$个串建广义后缀自动机,用线段树合并处理$parent$树子树内所有串出现次数。 将询问挂在第$pr$位上。 最后扫一遍原串,记录当前节点以及当前串长,在$parent$树上倍增找$s[pl,pr]$串,最后用线段树查询就好了。 阅读全文
posted @ 2019-04-19 16:44 LiGuanlin 阅读(172) 评论(0) 推荐(0)
摘要:题目描述 题解: 看起来是个dp。 还需要SAM维护。 还需要单调队列优化。 代码: 阅读全文
posted @ 2018-12-15 10:26 LiGuanlin 阅读(210) 评论(0) 推荐(0)
摘要:题目描述 题解: 这篇题解是关于manacher+SAM的。 PS.PAM已更新。 因为我还不会回文自动机我会学的 SAM支持给出一个串,求出现次数。 manacher支持找回文串。 然后放在一起,当每个节点回文半径扩展时查询。 这样时间是O(n^2)的。 为了时间,我们可以O(nlogn)预处理每 阅读全文
posted @ 2018-12-15 10:23 LiGuanlin 阅读(160) 评论(0) 推荐(0)
摘要:题目描述 题解: 最开始我想倒建倒查,结果发现需要另开线段树维护,结果算法退化了…… 说正解。 正建正查。 线段树合并+SAM。 将询问串放在SAM中,判断是否有匹配。 然后设定边界就可以了。 代码: 阅读全文
posted @ 2018-12-15 10:13 LiGuanlin 阅读(216) 评论(0) 推荐(0)
摘要:题目描述 题接: 没有任何意义的LCT+SAM。 没有题解 代码: 阅读全文
posted @ 2018-12-15 10:00 LiGuanlin 阅读(139) 评论(0) 推荐(0)
摘要:题目描述 题解: 对于多串的子串,我们可以建出广义后缀自动机。 由于本题询问的是(子串出现次数>=k)×len的总和,就将所有串扔到自动机中,爆跳pre并标记。每个点得到 一个经过次数cnt。 若cnt>=k,说明这个点压缩的所有子串都可以作为答案串。 然后处理出每个点到根的树链上所有点的答案。 代 阅读全文
posted @ 2018-12-15 09:58 LiGuanlin 阅读(150) 评论(0) 推荐(0)
摘要:题目描述 题解: 好神啊 建出后缀自动机,然后处理每个点parent树子树中endpos的数量,若为1即可成为识别子串。 对于每个点维护原串所在位置以及right的最小值mn。 然后套上线段树维护区间最小值。 基本就这样了。 代码: 阅读全文
posted @ 2018-12-11 18:38 LiGuanlin 阅读(144) 评论(0) 推荐(0)
摘要:题目描述 题解: 对于所有n串建广义后缀自动机。 (广义后缀自动机唯一区别就是每次将las附成1,并不需要在插入时特判) 建完后再建出parent树,然后用dfs序+树状数组搞区间不同种类。 其实就是HH的项链+广义后缀自动机。很水的。(虽然我调了半个晚上) 代码: 阅读全文
posted @ 2018-12-10 21:13 LiGuanlin 阅读(156) 评论(0) 推荐(0)
摘要:题目描述 题解: 鉴于子串我们很容易想到后缀自动机。 先建后缀自动机,然后处理单点价值以及对于每个点的总价值。 T=0要求去重,此时单点价值为1; T=0要求不去重,此时单点价值为parent树上endpos的数量。后缀的前缀就是子串。 由于建成的后缀自动机有向无环,我们可以O(n)时间处理每个点的 阅读全文
posted @ 2018-12-10 18:41 LiGuanlin 阅读(157) 评论(0) 推荐(0)
摘要:模板题,这里放一下代码: 阅读全文
posted @ 2018-12-10 09:26 LiGuanlin 阅读(158) 评论(0) 推荐(0)
摘要:题目描述 a180285 幸运地被选做了地球到喵星球的留学生。他发现喵星人在上课前的点名现象非常有趣。 假设课堂上有 N 个喵星人,每个喵星人的名字由姓和名构成。喵星球上的老师会选择M 个串来点名,每次读出一个串的时候,如果这个串是一个喵星人的姓或名的子串,那么这个喵星人就必须答到。 然而,由于喵星 阅读全文
posted @ 2018-09-22 11:20 LiGuanlin 阅读(226) 评论(2) 推荐(0)