随笔分类 -  字符串

摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4622 题意: 先输入一个长度为 n 的字符串, 然后有 q 个形如 l, r 的询问, 对于每个询问输出区间 [l, r] 中有多少不同的子串 思路: 后缀自动机模板 代码: 1 // 后缀自动机要理 阅读全文
posted @ 2017-09-11 21:28 geloutingyu 阅读(974) 评论(0) 推荐(0)
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2328 题意: 求 n 个串的字典序最小的最长公共子串 思路: 本题中单个字符串长度不超过 200, 可以暴力枚举一个字符串的所有前缀, 然后用kmp去匹配其他字符串. 我这里是用后缀数组写的. 类似 阅读全文
posted @ 2017-09-02 19:07 geloutingyu 阅读(334) 评论(0) 推荐(0)
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3518 题意: 给出一个字符串, 问其中有多少字串出现了两次以上(计算次数时不能彼此覆盖, 如 "aaaa" 中 "aa" 出现了两次而非三次). 思路: 后缀数组/字典树 后缀数组解法, 题目所求即使 阅读全文
posted @ 2017-09-01 17:15 geloutingyu 阅读(368) 评论(0) 推荐(0)
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1403 题意: 给出两个字符串, 求他们的最长公共子串 思路: 两个字符串的最长公共子串长度显然就是两个字符串的所有后缀中的最长公共前缀长度. 可以先用一个没有出现的字符(便于后面区分后缀是否属于相同字 阅读全文
posted @ 2017-08-29 22:23 geloutingyu 阅读(605) 评论(0) 推荐(0)
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2896 题意: 中文题诶~ 思路: ac自动机 这里要求记录匹配的模式串的编号, 不过题目中说明了不同模式串对应的编号是不同的, 所以可以直接用 end 数组记录编号即可, 然后与主串匹配成功的标记一下 阅读全文
posted @ 2017-08-24 11:08 geloutingyu 阅读(329) 评论(0) 推荐(0)
摘要:先推荐两篇写的很好的ac自动机blog: http://blog.csdn.net/creatorx/article/details/71100840 http://blog.csdn.net/niushuai666/article/details/7002823 正题 题目链接: http://a 阅读全文
posted @ 2017-08-23 21:00 geloutingyu 阅读(260) 评论(0) 推荐(0)
摘要:参考博客: https://wenku.baidu.com/view/8e9ebefb0242a8956bece4b3.html http://www.cnblogs.com/Rlemon/archive/2013/06/26/3157574.html 代码: 1 #include <iostrea 阅读全文
posted @ 2017-08-12 21:48 geloutingyu 阅读(225) 评论(0) 推荐(0)
摘要:题目链接: http://poj.org/problem?id=2185 题意: 给出一个矩形字符块, 求能组成该矩形块的最小子矩形块. 思路: 将每行字符串当作一个字符,那么原矩形字符块就成了一列字符,其最小循环节即为所求矩形块的宽; 将每列字符串当作一个字符,那么原矩形字符块就成了一行字符,其最 阅读全文
posted @ 2017-08-12 21:31 geloutingyu 阅读(467) 评论(0) 推荐(0)
摘要:题目链接: http://poj.org/problem?id=3167 题意: 给出两串数字 s1, s2, 求主串 s1 中的 s2 匹配数并输出每个匹配的开头位置. 区间 [l, r] 是 s2 的一个匹配当且仅当 s1[i] 是 [l, r] 中的第 s2[i - l] 大元素, 其中 l 阅读全文
posted @ 2017-08-11 15:26 geloutingyu 阅读(324) 评论(0) 推荐(0)
摘要:题目链接: https://vjudge.net/contest/70325#problem/K 题意: 给出一个字符串 str, 求 str 的所有前缀总共出现的次数. 思路: 先求一次 next 数组, 再用 vis[i] 存储 str[i - 1] 的所有后缀中能与 str 的前缀匹配的字符串 阅读全文
posted @ 2017-08-11 12:47 geloutingyu 阅读(260) 评论(0) 推荐(0)
摘要:题目链接: https://vjudge.net/contest/70325#problem/I 题意: 求多个字符串的最长公共子串, 有多个则输出字典序最小的. 思路: 这里的字符串长度固定为 60, 可以枚举其中一个字符串的所有子串, 然后拿这个子串去和其他字符串匹配就好了. 不过如果不用 km 阅读全文
posted @ 2017-08-10 21:29 geloutingyu 阅读(246) 评论(0) 推荐(0)
摘要:题目链接: https://vjudge.net/contest/70325#problem/H 题意: 输入字符串 str, 求 str 子串中既是 str 前缀又是 str 后缀的的字符串长度, 按照升序输出. 思路: 先求个 next 数组, next[i] 为以 i - 1(字符串下标从0开 阅读全文
posted @ 2017-08-10 20:32 geloutingyu 阅读(154) 评论(0) 推荐(0)
摘要:题目链接: https://vjudge.net/contest/70325#problem/D 题意: 给出一个循环字符串, 可以在两端添加任意字符, 问最少添加多少字符可以使循环字符串变成周期循环字符串且周期数大于1. 思路: gel = n - next[n] 为该字符串的最小循环节. 证明见 阅读全文
posted @ 2017-08-10 11:29 geloutingyu 阅读(199) 评论(0) 推荐(0)
摘要:题目链接: https://vjudge.net/contest/70325#problem/B 题意: 输出模式串在主串中出现的次数 思路: kmp模板 在 kmp 函数中匹配成功计数加一, 再令 j = nxt[j] 即可. 感觉有点奇怪的就是我拿 A 题的模板写这题居然会 tle, 而拿这题的 阅读全文
posted @ 2017-08-09 20:18 geloutingyu 阅读(276) 评论(0) 推荐(0)
摘要:题目链接: https://vjudge.net/contest/70325#problem/A 题意: 有两个数组 a, b, 输出 b 数组在 a 数组中的第一个匹配位置, 不能匹配则输出 -1. 思路: kmp模板 代码: 1 #include <iostream> 2 #include <s 阅读全文
posted @ 2017-08-09 19:34 geloutingyu 阅读(255) 评论(0) 推荐(0)
摘要:题目链接: http://codeforces.com/contest/835/problem/D 题意: 定义 k 度回文串为左半部分和右半部分为 k - 1 度的回文串 . 给出一个字符串 s, 问 1 ~ s.size() 度回文串的数目分别为多少 . 思路: 预处理 + 记忆化dp 可以先花 阅读全文
posted @ 2017-08-01 20:44 geloutingyu 阅读(330) 评论(0) 推荐(0)
摘要:最小表示法就是对于一个循环字符串,其字典序最小的状态; 显然任意一个循环串的最小表示法是唯一的,那么可以同过比较两个循环串的最小表示法来判断它们是否相同; 对于朴素算法: 初始化:i = 0, j = 1, k = 0; 若 s[i] < s[j],j++; 若 s[i] > s[j],i = j, 阅读全文
posted @ 2017-06-05 22:53 geloutingyu 阅读(297) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/contest/777/problem/D 题意:给出n行以#开头的字符串,从原字符串尾部删除尽量少的字符串,使其为非降序排列。 思路:我们可以从最后一个字符串着手,对其前面的字符串进行删除操作,使其不大于前者。遍历到第一个字符串时就得到了我们所 阅读全文
posted @ 2017-02-24 21:41 geloutingyu 阅读(317) 评论(0) 推荐(0)
摘要:题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1092 题意:中文题诶~ 思路: 解法1:最坏的情况就是在原字符串的右边添加该字符串的倒序字符串咯,长度为a.size(),不难想到原字符串和其倒序字符串可能存在 阅读全文
posted @ 2017-01-14 19:17 geloutingyu 阅读(315) 评论(0) 推荐(0)
摘要:题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1347 题意:中文题诶~ 思路:稍推理一下就可以发现字符串a是对偶串是其可以由对偶串旋转得到的充要条件; 代码: 阅读全文
posted @ 2017-01-11 19:15 geloutingyu 阅读(169) 评论(0) 推荐(0)