题目描述 给一个小写字母字符串 S ,q 次询问每次给出 l,r ,求 s[l..r] 的 Border 。 Border: 对于给定的串 s ,最大的 i 使得 s[1..i] = s[|s|-i+1..|s|], |s| 为 s 的长度。 题解 这题的描述很短,给人一种很可做的假象。 暴力1:每 ...
分类:
其他好文 时间:
2018-12-22 22:08:06
阅读次数:
223
题目描述 题解: 对于多串的子串,我们可以建出广义后缀自动机。 由于本题询问的是(子串出现次数>=k)×len的总和,就将所有串扔到自动机中,爆跳pre并标记。每个点得到 一个经过次数cnt。 若cnt>=k,说明这个点压缩的所有子串都可以作为答案串。 然后处理出每个点到根的树链上所有点的答案。 代 ...
分类:
其他好文 时间:
2018-12-15 12:03:13
阅读次数:
95
rt 明明能哈希为什么要KMP/AC自动机/后缀数组/后缀自动机/后缀树呢??????? 【XSY2361】LCP 给定串 S,m 组询问 (X, Y, L, R): 求 S[X:Y] 与 S[L:R] 的最长公共前缀. 1 #include<algorithm> 2 #include<iostre ...
分类:
其他好文 时间:
2018-12-14 13:01:33
阅读次数:
172
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2555 要维护 right 集合的大小。因为 fa 会变,且 fa 构成一棵树,所以考虑用 LCT 来维护…… 和平常写的 LCT 不太一样。因为要的值是原树上子树里的值,所以没有 makero ...
分类:
其他好文 时间:
2018-12-12 12:22:53
阅读次数:
172
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2555 建立后缀自动机,就可以直接加入新串了; 出现次数就是 Right 集合的大小,需要查询 Parent 树上的子树和; 所以可以用 LCT 维护 Parent 树,因为 Parent 树是 ...
分类:
其他好文 时间:
2018-12-12 11:19:07
阅读次数:
174
题目描述 题解: 好神啊 建出后缀自动机,然后处理每个点parent树子树中endpos的数量,若为1即可成为识别子串。 对于每个点维护原串所在位置以及right的最小值mn。 然后套上线段树维护区间最小值。 基本就这样了。 代码: ...
分类:
其他好文 时间:
2018-12-11 19:55:27
阅读次数:
289
题目描述 题解: 对于所有n串建广义后缀自动机。 (广义后缀自动机唯一区别就是每次将las附成1,并不需要在插入时特判) 建完后再建出parent树,然后用dfs序+树状数组搞区间不同种类。 其实就是HH的项链+广义后缀自动机。很水的。(虽然我调了半个晚上) 代码: ...
分类:
其他好文 时间:
2018-12-10 21:55:47
阅读次数:
246
对于一个给定长度为$N$的字符串,求它的第$K$小子串是什么。 Input 第一行是一个仅由小写英文字母构成的字符串$S$ 第二行为两个整数$T$和$K$,$T$为0则表示不同位置的相同子串算作一个。$T=1$则表示不同位置的相同子串算作多个。$K$的意义如题所述。 Output 输出仅一行,为一个 ...
分类:
其他好文 时间:
2018-12-10 20:49:06
阅读次数:
183
题目描述 题解: 鉴于子串我们很容易想到后缀自动机。 先建后缀自动机,然后处理单点价值以及对于每个点的总价值。 T=0要求去重,此时单点价值为1; T=0要求不去重,此时单点价值为parent树上endpos的数量。后缀的前缀就是子串。 由于建成的后缀自动机有向无环,我们可以O(n)时间处理每个点的 ...
分类:
其他好文 时间:
2018-12-10 19:11:02
阅读次数:
169