随笔分类 -  字符串处理

回文树,Manacher,后缀数组,后缀自动机,前缀数组,字典树,AC自动机,KMP等
摘要:题目链接:http://codeforces.com/contest/842/problem/D 题意:定义Mex为一个序列中最小的未出现的正整数,给定一个长度为n的序列,然后有m个询问,每个询问给定一个数x,先对序列每个数与x进行异或运算(^),之后输出当前序列修改完之后的Mex。 思路:因为对于 阅读全文
posted @ 2017-08-30 12:00 キリト 阅读(222) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/contest/835/problem/D 题意:给定一个字符串,定义kth回文是左半部分等于右半部分,并且左半部分和右半部分都是(k-1)th回文。 只要是回文字串都是1th回文。 对于1<=k<=strlen(s),输出kth回文的数量。 思 阅读全文
posted @ 2017-08-01 22:43 キリト 阅读(196) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/contest/835/problem/B 题意:给定一个数k和一个数字串n。问你最少改几个数字才能满足所有数字的和不小于k。 思路:考虑贪心,每次肯定把最小的数字改成'9' 会使得所有数字的和最大。 阅读全文
posted @ 2017-08-01 22:20 キリト 阅读(222) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/contest/831/problem/B 题意:给第2个26个字母并不重复的字符串(2个字符串对于一个映射),第1个字符串为key集合,第2个字符串为对应的value集合。 然后给了一个字符串(包括小写字母和数字),按照映射规则输出结果(数字不 阅读全文
posted @ 2017-07-27 20:21 キリト 阅读(132) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/contest/832/problem/B 题意:给定一个好字母集合(只有小写字母,除了这些外其余都是坏字母集合),给定一个匹配模式串, 模式串只包含小写字母,'*','?'; 其中'?'可以替换成“好字母集合”中的任意一个字母 ‘*’可以替换成 阅读全文
posted @ 2017-07-27 19:53 キリト 阅读(177) 评论(0) 推荐(0)
摘要:题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1486 题意:给定一个n*m的字符矩阵,问你是否存在两个不重合(可以有交集)的正方形矩阵完全一致, 存在输出正方形的最大边长和两个正方形的左上角坐标,不存在则输出0 思路:二维字符串Hash,二分正 阅读全文
posted @ 2017-06-29 19:24 キリト 阅读(344) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3948 题意:给定一个字符串,求字符串本质不同的回文子串个数。 思路:主要参考该篇解题报告 先按照manacher的构造方法改造一遍串,然后跑一遍manacher。求出以i为中心的最长回文串长度p[i]。 阅读全文
posted @ 2016-10-12 11:39 キリト 阅读(322) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3415 题意:给定2个串[A串和B串],求两个串公共子串长度大于等于k的个数。 思路:首先是两个字符串的问题。所以想用一个'#'把两个字符串拼接起来。求后缀数组。 然后按照k把height数组分组。大于等于k的为一组,然后就是统计每组的 阅读全文
posted @ 2016-09-04 14:02 キリト 阅读(324) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/contest/710/problem/F 题意:维护一个集合,集合要求满足三种操作。 1 str:向集合插入字符串str(保证不会插入之前已经插入过的字符串) 2str:从集合中删除字符串str(保证删除的str一定在集合中) 3 str:st 阅读全文
posted @ 2016-09-03 21:33 キリト 阅读(1248) 评论(0) 推荐(0)
摘要:题目链接: 题意:给定一个只含字母的字符串,求在字符串末尾添加尽量少的字符使得字符串为回文串。 思路:因为只能从末尾添加字符,所以其实求的是最长的后缀回文串。那么添加的字符为除了这个原串的最长后缀回文串之外的其他字符。于是问题就转变成了求字符串的最长后缀回文串,对于后缀数组求回文串子串的做法,将整个 阅读全文
posted @ 2016-08-26 20:16 キリト 阅读(534) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3080 题意:给定n个DNA串,求最长公共子串。如果最长公共子串的长度小于3时输出no significant commonalities,否则输出该子串,如有多解请输出字典序最小的解 思路:是POJ 3405的弱化版。思路请参考 阅读全文
posted @ 2016-08-25 15:06 キリト 阅读(196) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3450 题意:给定n个字符串,求n个字符串的最长公共子串,无解输出IDENTITY LOST,否则最长的公共子串。有多组解时输出字典序最小的解 思路:后缀数组的解法,我们把n个串都链接起来,中间用一些互不相同的且都没在原串中出现过的字符 阅读全文
posted @ 2016-08-25 14:59 キリト 阅读(297) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1226 题意:给定n个字符串[只含大小写字母],求一个字符串要求在n个串或者他们翻转后的串的出现过。输出满足要求的字符串的长度 思路:根据<<后缀数组——处理字符串的有力工具>>的思路,这题不同的地方在于要判断是否在反转后的字符串中出现 阅读全文
posted @ 2016-08-17 20:56 キリト 阅读(628) 评论(1) 推荐(1)
摘要:题目链接:http://www.spoj.com/problems/PHRASES/en/ 题意:给定n个字符串,求一个最长的子串至少在每个串中的不重叠出现次数都不小于2。输出满足条件的最长子串长度 思路:根据<<后缀数组——处理字符串的有力工具>>的思路,先将 n个字符串连起来, 中间用不相同的且 阅读全文
posted @ 2016-08-15 22:23 キリト 阅读(258) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3294 题意:给定n个字符串,求一个最长子串要求在超过一半的字符串中出现过。 如果多解按字典序输出 思路:根据<<后缀数组——处理字符串的有力工具>>的思路,将 n个字符串连起来, 中间用不相同的且没有出现在字符串中的字符隔开, 求后缀 阅读全文
posted @ 2016-08-15 16:21 キリト 阅读(208) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2774 题意:给定两个只含小写字母的字符串,求字符串的最长公共子串长度。 思路:根据<<后缀数组——处理字符串的有力工具>>的思路,字符串的任何一个子串都是这个字符串的某个后缀的前缀 。求 A和 B的最长公共子串等价于求 A的后缀和 B 阅读全文
posted @ 2016-08-12 17:01 キリト 阅读(201) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3693 题意:首先定义了一个字符串的重复度。即一个字符串由一个子串重复k次构成。那么最大的k即是该字符串的重复度。现在给定一个长度为n的字符串,求最大重复次数的子串,有多解时输出字典序最小解。 思路:与SPOJ的题意差不多,可以点击这里 阅读全文
posted @ 2016-08-12 15:59 キリト 阅读(244) 评论(0) 推荐(0)
摘要:题目链接:http://www.spoj.com/problems/REPEATS/en/ 题意:首先定义了一个字符串的重复度。即一个字符串由一个子串重复k次构成。那么最大的k即是该字符串的重复度。现在给定一个长度为n的字符串,求最大重复次数。 思路:根据<<后缀数组——处理字符串的有力工具>>的思 阅读全文
posted @ 2016-08-12 13:39 キリト 阅读(293) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5769 [2016多校contest-4] 题意:给定一个字符,还有一个字符串,问这个字符串存在多少个不同的子串并且子串含有给定的字符。 思路:先忽略包含某个字符的问题,只求一个字符串不同的子串个数,根据 阅读全文
posted @ 2016-08-11 22:15 キリト 阅读(227) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2406 题意:给定一个字符串,求由一个子串循环n次后可得到原串,输出n[即输出字符串的最大循环次数] 思路一:KMP求最小循环机,然后就能求出循环次数。 思路二:后缀数组,直接根据09年oi论文<<后缀数组——出来字符串的有力工具>>的 阅读全文
posted @ 2016-08-10 15:29 キリト 阅读(331) 评论(0) 推荐(0)