题意:给定一个字符串,q次询问,每次询问给定一个数k,查询原串的所有不同子串中字典序第k小的子串在原串中的开始和结束位置,若有多个答案则输出最小的开始位置,不存在输出0 0 后缀自动机经典问题,所以我用后缀数组 预处理sum数组记录不同字符串的个数,即sum[i] = len - sa[i] + 1 ...
分类:
编程语言 时间:
2019-09-09 22:35:04
阅读次数:
108
Given a sequence, {A1, A2, ..., An} which is guaranteed A1 > A2, ..., An, you are to cut it into three sub-sequences and reverse them separately to fo ...
分类:
编程语言 时间:
2019-09-07 22:41:07
阅读次数:
124
题面就不弄了 题意:给你一个串,让你求出补充最少的字符形成的回文串 思路:思路很好想,就是对一个串,找其最后一个字符(第一个也行)和原串的反串的最长公共前缀,这样就求出了该串中的已有最长回文,然后把剩下部分 倒序添加到原串上即可。 也就是我们可以固定一个位置,即使反串的第一个单词(原串最后一个),然 ...
分类:
编程语言 时间:
2019-09-07 22:30:12
阅读次数:
114
后缀数组是一个思路较为清晰,代码十分玄学的操作,~~建议大家按照代码模拟一下样例,理解每一步操作的意义~~ 后缀数组的作用是将长度为N的字符串的N个后缀来进行排序 我们直接排序的复杂度是$O(N^2logN)$ 后缀数组常用方法是倍增+基数排序算法: 1.基数排序 我们先来看一下代码:(默认升序排列 ...
分类:
编程语言 时间:
2019-09-01 12:56:49
阅读次数:
141
题目描述: 求字符串中出现次数最多的子串的出现次数。 例如字符串abcbcbcabc,出现次数最多的子串是bc,出现次数为4 思路:利用后缀数组: abcbcbcabc 第0个 bcbcbcabc 第1个 cbcbcabc 第2个 bcbcabc 第3个 cbcabc 第4个 bcabc 第5个 c ...
分类:
其他好文 时间:
2019-09-01 10:19:57
阅读次数:
75
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6704 推荐博客:https://www.cnblogs.com/1625--H/p/11403199.html 题意:输入t,接下来t组数据,每组数据输入n和q,n代表字符串长度,q代表查询次数,接下来 ...
分类:
编程语言 时间:
2019-08-31 16:53:30
阅读次数:
99
题面 https://www.luogu.org/problem/P4248 题解 这里,提供后缀数组的做法。 ...
分类:
其他好文 时间:
2019-08-29 00:18:25
阅读次数:
80
http://cogs.pro:8080/cogs/problem/problem.php?pid=pxXNxQVqP 题意:给m个单词,让求最长公共子串的长度。 思路:先把所有单词合并成一个串(假设长度是n,包含分隔符),中间用不同符号分隔,求出high[i](表示rk为i的和rk为i+1的后缀的 ...
分类:
编程语言 时间:
2019-08-28 00:42:34
阅读次数:
116
题意: 给你一个长度为n的01串,问你这个串的所有子串中,出现次数大于1的子串的出现次数,最后按照字典序输出。 分析: 对于这个题目,我们显然可以用两种处理后缀的数据结构进行处理。 1:后缀自动机: 个人觉得在这个题中,用后缀自动机去解决会相对来说比较好理解。 我们知道,在后缀自动机上的结点状态$s ...
分类:
编程语言 时间:
2019-08-26 15:03:39
阅读次数:
73
题意 给定两个字符串,求长度大于等于k的公共子串数。 分析 将两个字符串中间加个特殊字符拼接,跑后缀数组。 将题目转化为对每一个后缀求$\sum_{j=1}^{i 1}lcp(i,j)$,且后缀$i$和$j$属于不同字符串。 由于$lcp$只跟$h$数组的区间最小值有关,因此对于单调递减的$h[i] ...
分类:
其他好文 时间:
2019-08-25 21:36:42
阅读次数:
102