Loading

随笔分类 -  算法--后缀数组

摘要:题意 求一个字符串中本质不同的回文子串的个数。 $ 1\leq |string| \leq 100000$ 思路 好像是回文自动机的裸题,但是可以用 $\text{Manacher}$ (马拉车)算法配合后缀数组(或配合哈希表)解决。 $\text{Manacher}$ 算法非常短小精悍,它可以在线 阅读全文
posted @ 2019-04-22 15:39 Paulliant 阅读(179) 评论(0) 推荐(0)
摘要:题意 定义一个字符串的复读数为它可以被分割成最多的的若干个相同连续的子串个数,求一个字符串中复读次数最大的子串位置,若有相同,输出字典序最小的。 $1 \leq \text{length}(string)\leq 10^5$ 思路 后缀数组的 $H$ 是排名相邻两个后缀的 $\text{lcp}$ 阅读全文
posted @ 2019-03-23 11:51 Paulliant 阅读(213) 评论(0) 推荐(0)
摘要:题意 求字符串 $S$ 本质不同且一定包含字符 $X$ 的子串个数。 $1 \leq |S| \leq 10^5$ 思路 求一个长度为 $n$ 的串 $S$ 本质不同的子串个数可以使用公式 $\displaystyle\sum_{i=1}^{n} n sa[i]+1 H[i]$ ,其中 $H[0]= 阅读全文
posted @ 2019-03-22 22:21 Paulliant 阅读(174) 评论(0) 推荐(0)
摘要:题意 长度为 $n$ 由数字构成的串,求一段最长满足以下要求的子串: 长度至少为 $5$ 在其他位置有一个不相交的等长子串满足原串或原串加上或减去一个数后与之完全相同。 $1\leq n \leq 20000$ 思路 不难看出题目要求的是满足两两数之差相同的串,那么直接对原串进行差分,剩下的就是求两 阅读全文
posted @ 2019-03-21 17:30 Paulliant 阅读(197) 评论(0) 推荐(0)
摘要:题意 给定一个长度为 $n​$ 的由正整数构成的串和一个整数 $K​$,求至少出现 $K​$ 次的串的最长长度(可以重叠)。 $1 \leq n\leq 20000​$ $2\leq K\leq n$ 思路 变量及其含义 后缀数组(SA)是一个比较灵活的处理字符串有关问题的算法,它能对一个串的所有后 阅读全文
posted @ 2019-03-21 17:27 Paulliant 阅读(209) 评论(0) 推荐(0)