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

摘要:http://uoj.ac/problem/219 (题目链接) 题意 一个字符串求它有多少个形如AABB的子串。 Solution 其实跟后缀数组里面一个论文题poj3693处理方式差不多吧。 先处理出以位置${x}$为终点的${AA}$串的个数,区间加法用差分处理,然后处理出以位置${y}$为起 阅读全文
posted @ 2017-02-03 21:27 MashiroSky 阅读(178) 评论(0) 推荐(0)
摘要:http://uoj.ac/problem/131 (题目链接) 题意 给出一个字符串,每个后缀有一个权值${a_i}$,这些后缀两两之间存在公共前缀。问能够组成长度从0~n-1的公共前缀的后缀的方案数以及他们权值的最大乘积。 Solution 听LCF说这是水题,就来做了。。 lyp学长说SAM构 阅读全文
posted @ 2017-01-22 02:18 MashiroSky 阅读(296) 评论(1) 推荐(0)
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=4516 (题目链接) 题意 依次向字符串末尾加上一个字符,每次求不同子串个数。 Solution 如果不是字符的范围太大,这道题就是个板子题。。所以我们把后缀自动机上的边用map存下就好了。 伦说has 阅读全文
posted @ 2017-01-20 15:45 MashiroSky 阅读(293) 评论(1) 推荐(0)
摘要:http://uoj.ac/problem/35 (题目链接) 题意 如题,并且求height数组。 Solution 挂一发后缀自动机构后缀数组及height数组 细节 注意基数排序和连边的时候不要把根节点也算进去 代码 阅读全文
posted @ 2017-01-19 16:43 MashiroSky 阅读(232) 评论(0) 推荐(0)
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=2806 (题目链接) 题意 给出M个字符串组成“标准库”。定义L表示将一个字符串分成若干段,每一段的长度不小于L,其中是在标准库中任一字符串的子串的字符“段”的长度之和不小于原字符串长度之和的90%。N 阅读全文
posted @ 2017-01-17 22:04 MashiroSky 阅读(251) 评论(0) 推荐(0)
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1396 (题目链接) 题意 问字符串S每一位的最短识别子串是多长(识别子串指包含这个字符且只出现在S中一次的子串)。 Solution 很简单,搞出后缀数组以后,对于每一个后缀i,都可以求出从i向后延伸 阅读全文
posted @ 2017-01-13 22:23 MashiroSky 阅读(346) 评论(0) 推荐(0)
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=3238 (题目链接) 题意 给出一个字符串,求${\sum_{1<=i<j<=n} len(T_i)+len(T_j)-2*lcp(T_i,T_j)}$,其中${T_i}$表示i的后缀 Solution 阅读全文
posted @ 2017-01-13 20:44 MashiroSky 阅读(181) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=3623 (题目链接) 题意 给出一个字符串,每次可以取首或尾接到一个新的字符串后面,求构出的字典序最小的新字符串。 Solution 首先可以发现,一定是优先选择字典序最小的,所以就将字符串反过来接在后面并用分隔符隔开,求一遍后缀数组,然后每次比 阅读全文
posted @ 2017-01-13 19:51 MashiroSky 阅读(277) 评论(0) 推荐(0)
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1031 (题目链接) 题意 给出一个字符串,求它的加密串。 Solution 很显然,将串倍长后求它的后缀数组,然后扫一遍就可以了 细节 数组开两倍 代码 阅读全文
posted @ 2017-01-13 17:22 MashiroSky 阅读(157) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=3294 (题目链接) 题意 给定 n 个字符串,求出现在不小于 k 个字符串中的最长子串。 Solution 后缀数组论文题。。 将 n 个字符串连起来,中间用不相同的且没有出现在字符串中的字符隔开,求后缀数组。然后二分答案,将后缀分成若干组,判 阅读全文
posted @ 2017-01-13 11:26 MashiroSky 阅读(196) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=3415 (题目链接) 题意 给定两个字符串 A 和 B,求长度不小于 k 的公共子串的个数(可以相同)。 Solution 后缀数组论文题。。。 基本思路是计算 A 的所有后缀和 B 的所有后缀之间的最长公共前缀的长度,把最长公共前缀长度不小于 阅读全文
posted @ 2017-01-13 09:37 MashiroSky 阅读(189) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=3693 (题目链接) 题意 给定一个字符串,求重复次数最多的连续重复子串,若存在多组解,输出字典序最小的。 Solution 后缀数组论文题,就是加了个字典序要求。 先穷举长度 L,然后求长度为 L 的子串最多能连续出现几次。首先连续出现 1 次 阅读全文
posted @ 2017-01-12 21:26 MashiroSky 阅读(370) 评论(0) 推荐(1)
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1297 (题目链接) 题意 求最长回文子串 Solution 后缀数组论文题 穷举每一位,然后计算以这个字符为中心的最长回文子串。注意这里要分两种情况,一是回文子串的长度为奇数,二是长度为偶数。两种情况都可以 阅读全文
posted @ 2017-01-11 22:53 MashiroSky 阅读(230) 评论(5) 推荐(0)
摘要:http://www.spoj.com/problems/SUBST1/ (题目链接) 题意 求字符串的不相同的子串个数 Solution 后缀数组论文题。 每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同的前缀的个数。如果所有的后缀按照 suffix(sa[1]), suffi 阅读全文
posted @ 2017-01-11 21:35 MashiroSky 阅读(172) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=1743 (题目链接) 题意 给出n个音符的乐谱,求其中不重叠的重复最长连续段,重复连续段的定义为两段音符起伏相同。 Solution 论文题,相邻两个音符取差值,然后height分组二分答案即可。 代码 阅读全文
posted @ 2017-01-11 20:30 MashiroSky 阅读(114) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=2774 (题目链接) 题意 给出两个只包含小写字母的字符串,求出最长连续公共子串。 solution 第一次用后缀数组,感觉有点神。。。才发现原来sa[0]是没用的。。 将两个字符串合并为一个,并用分隔符隔开。之后跑后缀数组,求出height[] 阅读全文
posted @ 2016-09-28 14:41 MashiroSky 阅读(269) 评论(0) 推荐(1)
摘要:http://poj.org/problem?id=3261 (题目链接) 题意 给出n个数和k,求在给出的数中,最长的出现至少k次的可重叠子串。 solution 后缀数组论文题,感觉分组思想可能会有大用。 果断后缀数组,求出${sa,height,rank}$。二分答案,每次判断长度${mid} 阅读全文
posted @ 2016-09-28 14:31 MashiroSky 阅读(299) 评论(0) 推荐(0)