后缀数组总结 学习后缀数组可以参考2009年国家集训队论文《后缀数组——处理字符串的有力工具》BY罗穗骞 这里只有代码 cpp const int N = 1e6+5; char s[N]; int n,a[N],t[N],x[N],y[N],SA[N],Rank[N],Height[N],ans; ...
分类:
编程语言 时间:
2018-02-24 23:05:35
阅读次数:
290
#include #include #include #define N 200005 using namespace std; int buf1[N],buf2[N],sa[N],rnk[N],buc[N],n,height[N],ans,belong[N]; char s[N]; void su... ...
分类:
编程语言 时间:
2018-02-24 13:20:03
阅读次数:
221
题解:求解每个位置向左向右AA串的个数f[x],g[x]; 枚举A的长度,每A个位置设一个关键点 每一个A一定仅且跨越一个关键点 然后求出相邻关键点向前向后的最长公共前缀的长度,这会对一段区间的f,g产生影响; 用差分+前缀和统计答案 ...
分类:
其他好文 时间:
2018-02-20 11:50:24
阅读次数:
164
"题目链接" 题意 对于给定的字符串,求有多少个 不重叠的子串 出现次数 $\geq 2$. 思路 枚举子串长度 $len$,以此作为分界值来对 $height$ 值进行划分。 显然,对于每一组,组内子串具有一个长度为 $len$ 的公共前缀。 至于是否重叠,只需判断 $sa_{max} sa_{m ...
分类:
编程语言 时间:
2018-02-10 23:28:24
阅读次数:
327
标签:Splay+Hash 题解: 首先肯定不是后缀数组,当然splay比后缀数组要简单一些。 求解这个问题,我们可以二分,对于两个串A,B他们的最长公共前缀是可以二分出来的。 那么我们对于每一个后缀,二分一下,但是需要维护这一个东西,那么我们使用splay来维护序列。按照下标为关键字来把初始字符串 ...
分类:
Web程序 时间:
2017-12-21 18:13:34
阅读次数:
241
1. 原题链接 https://leetcode.com/problems/longest-common-prefix/description/ 2. 题目要求 给定一个字符串数组,让你求出该数组中所有字符串的最大公共前缀。例如{"qqwwee", "qqww", "qqfds"}的最大公共前缀为" ...
分类:
其他好文 时间:
2017-12-20 13:33:20
阅读次数:
173
给k个字符串,求出他们的最长公共前缀(LCP) 样例 在 "ABCD" "ABEF" 和 "ACEF" 中, LCP 为 "A" 在 "ABCDEFG", "ABCEFG", "ABCEFA" 中, LCP 为 "ABC" 在 "ABCD" "ABEF" 和 "ACEF" 中, LCP 为 "A" ...
分类:
其他好文 时间:
2017-12-09 20:45:46
阅读次数:
146
"BZOJ 1014" 火星人 题意 有一个字符串,三中操作:在某位置后面插入一个字符、修改某位置的字符、询问两个后缀的最长公共前缀。 题解 看到网上的dalao们都说这道题是平衡树,我就很懵x……平衡树维护什么啊? 最后发现某个节点维护的是它所代表的区间的哈希值——显然这个哈希值可以从左右子树的哈 ...
分类:
其他好文 时间:
2017-12-08 16:43:00
阅读次数:
124
扩展KMP的应用 我们发现本题的关键在于如何高效的判断两个 同构字符串 的大小关系,想到如果能够预处理出每一个同构字符串与原字符串的最长公共前缀,那么直接比较它们不一样的部分就好,扩展KMP正好是用来处理这样的问题的,把原串copy一遍加在其后,在其上跑一遍exKMP的next数组,就预处理出了所有 ...
分类:
其他好文 时间:
2017-12-07 22:42:27
阅读次数:
189
1.1、什么是Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是最大限度地减少无谓的字符串比较,查询效率比较高。 Trie的核心思想是空间换时间,利用字符串的公共前缀来降 ...
分类:
其他好文 时间:
2017-12-06 12:57:33
阅读次数:
140