随笔分类 -  字符串—后缀数组

摘要:后缀数组+单调栈的应用 首先我们研究一下这个表达式,可以发现前半部分与串的情况并没有关系,而只是跟串的长度有关,所以我们先把前半部分算出来: 于是我们只需计算出即可 那么可以发现,对于排名分别为i,j的两个串,他们的lcp应当是: 但是这里的时间复杂度仍然很大 我们换一个角度来思考:如果设,那么我们 阅读全文
posted @ 2019-04-15 20:00 lleozhang 阅读(114) 评论(0) 推荐(0) 编辑
摘要:题意:给出两个字符串,求这两个子串中最长相同子串长度 策略: 首先,我们可以将这两个字符串首尾相接,这样我们就可以获得一个长字符串,然后我们对这个新串求出height数组,然后枚举所有height并且找出两个sa,查出这两个sa是否在两个串内,这样就可以了如果是的话就用height更新ans即可 还 阅读全文
posted @ 2018-09-29 15:57 lleozhang 阅读(86) 评论(0) 推荐(0) 编辑
摘要:vjudge原地爆炸... 题意:求一个字符串不同的子串的个数 策略:后缀数组 利用后缀数组的sa和height两个功能强大的数组,我们可以实现上述操作 首先有个很显然的结论:一个字符串的所有子串=它后缀的所有前缀 这是很显然的,因为一个后缀的前缀遍历了所有以该后缀起点为起点的字符串的子串,那么如果 阅读全文
posted @ 2018-09-26 19:04 lleozhang 阅读(103) 评论(0) 推荐(0) 编辑
摘要:秒掉2/8的男人... 这题也是考察的后缀数组基础应用:可重叠至少重复k次的最长子串 显然还是对height数组应用于二分答案的检验 二分一个长度,然后用height数组检验即可 注意:不能单纯看height数组中出现某个值的次数,而是要关注height数组中连续出现某个值的次数,否则无法判断这个公 阅读全文
posted @ 2018-09-26 16:46 lleozhang 阅读(151) 评论(0) 推荐(0) 编辑
摘要:激动ing...我完成了1/8的男人... 其实不难,但我交了3页WA,原因是我为防RE特判n=1直接输出,并没有读入!!! 题意:给定一个长为n的序列,定义该序列的两个子序列(连续)相似,当且仅当这两个子序列长度相同且互不重叠,而且这两个子序列每个序列内部相邻元素前后做差,将所有差值排列成一个序列 阅读全文
posted @ 2018-09-26 16:21 lleozhang 阅读(123) 评论(0) 推荐(0) 编辑
摘要:后缀数组是一个很迷的字符串算法... 后缀数组的特点是:思想嘛...还行 代码嘛...很乱 首先做一些基础介绍: 后缀数组(sa)是一个数组(废话),他的作用是存储字典序排名为i的后缀的位置(即后缀的起点) 而后缀数组常常与rank数组同步计算,其中rank数组是起点为i的后缀的排名 既然如此,我们 阅读全文
posted @ 2018-09-21 16:07 lleozhang 阅读(142) 评论(0) 推荐(0) 编辑

levels of contents
点击右上角即可分享
微信分享提示