字符串处理
文章平均质量分 65
CN_swords
这个作者很懒,什么都没留下…
展开
-
【后缀数组】JZOJ1598
/* Problem: JZOJ1598(询问一个字符串中有多少至少出现两次的子串) Content: SA's Code and Explanation Author : YxuanwKeith */ #include #include #include using namespace std; const int MAXN = 100005; char c原创 2017-11-29 20:29:01 · 499 阅读 · 0 评论 -
【manacher变形】Timus OJ 1354. Palindrome. Again Palindrome 包尾部最长回文串
题意:在A串下面加上B串,让A+B串成为回文串,注意B串不能是空串。 题解:其实我们只要找到包括尾部的最长回文串就可以了,那么如何寻找。manacher算法可以寻找到一个字符串的最长的回文串,那么根据其原理,将判断p[i]+i == len,将其长度纳入一个数组,就是其包括尾部字符的最长回文串所有长度,那么取最大长度即可,但是有种情况是最大长度等于字符串长度,那么B串就为空串,不行,那么选第二的长原创 2016-10-16 16:39:03 · 322 阅读 · 0 评论 -
【KMP求字符串匹配次数】 hdu 1686
Hdu 1686 求模式串出现在目标串的次数 #include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; //#pragma comment(linker, "/STACK:102400000,10240原创 2017-07-22 21:05:51 · 864 阅读 · 0 评论 -
【KMP求字符串第一个匹配位置】hdu 1711
Hdu 1711 求模式串第一次出现在目标串的位置 #include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; //#pragma comment(linker, "/STACK:102400000,10原创 2017-07-22 21:07:29 · 290 阅读 · 0 评论 -
【KMP思想求循环节】hdu 1358 hust 1010 poj 2406
字符串的循环节为 字符串长度减去字符串最长公共前后缀的长度。 hdu 1358 #include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; //#pragma comment(linker, "/STA原创 2017-07-22 21:15:30 · 251 阅读 · 0 评论 -
【Ac自动机】hdu 2222
hud 2222 求对于较长字符串寻找出现的单词数 (已存在单词表的单词)。 简单介绍下,Ac自动机通过构建字典树和fail指针指向树,同样应用用公共前后缀的思想,实现匹配时间的优化。 #include #include #include #include using namespace std; const int M = 1000010; //目标串长度 const in原创 2017-07-22 21:23:28 · 328 阅读 · 0 评论 -
【Ac自动机】 HDU - 2896,HDU - 3065
HDU 2896 对于目标串中模式串可重叠,匹配完一个字符串,当前指向指针应该不变,而不是回到根节点。然而数据水了,回到根节点也过了。 #include #include #include #include using namespace std; const int M = 10004; const int N = 100005; struct Aho{ struct原创 2017-07-23 15:25:47 · 257 阅读 · 0 评论 -
【Kmp求字符串前缀在字符串出现的次数】51nod 1277 字符串中的最大值
#include #include #include using namespace std; typedef long long LL; /* 51nod 1277 字符串中的最大值 求前缀在字符串出现的次数 (num[i]) num[nex[i]] += num[i]; */ const int N = 100010; char s[N]; int nex[N]; void getn原创 2017-07-24 20:03:35 · 555 阅读 · 0 评论 -
【Kmp求既是前缀又是后缀的子串】POJ - 2752 Seek the Name, Seek the Fame
Link: http://poj.org/problem?id=2752 #include #include using namespace std; /* POJ - 2752 从小到大输出满足既是前缀又是后缀的字符串长度 next数组递归产生 */ const int N = 400005; int nex[N]; void getnext(char *s){ int k =原创 2017-07-26 21:25:34 · 421 阅读 · 0 评论 -
【Kmp】Blue Jeans POJ - 3080
Link:http://poj.org/problem?id=3080 //#include #include #include #include #include using namespace std; typedef long long LL; /* 题意:找出n个串中最长的公共串,并且要求字典序最大 题解:枚举第一字符串的子串 */ const int N = 66; i原创 2017-08-01 20:09:06 · 211 阅读 · 0 评论 -
【回文串】835D Palindromic characteristics
Link:http://codeforces.com/problemset/problem/835/D #include using namespace std; const int N = 5e3+5; char s[N]; int n; int ans[N],ma[N],mb[N]; int Ma(int x){ int cnt = 0; while(x-cnt>=0原创 2017-08-01 21:49:23 · 278 阅读 · 0 评论 -
【Ac自动机】Detect the Virus ZOJ - 3430
Link:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3430 #include using namespace std; /* 题意:给出n个编码后的模板串,然后有M次询问,每次询问输入一个编码后的文本串, 问在编码前,有多少个模板串在文本串中出现过。 */ const int N = 55000; cons原创 2017-08-02 20:55:00 · 313 阅读 · 0 评论 -
【Ac自动机】hdu 5880 Family View
Link:http://acm.split.hdu.edu.cn/showproblem.php?pid=5880 #include using namespace std; typedef long long LL; const int N = 1000110; int len[N]; int res[N]; struct Aho { struct Node{原创 2017-08-09 15:16:15 · 294 阅读 · 0 评论 -
【Ac自动机+矩阵加速】poj 2778 DNA Sequence
Link:http://poj.org/problem?id=2778 字典树的每个节点作为一个状态,矩阵记录i点走一步的可行的状态转移的方法数,用矩阵快速幂计算所有可行的方法数。 //#include #include #include #include #include using namespace std; typedef long long LL; const int原创 2017-08-09 16:53:33 · 376 阅读 · 0 评论 -
【Tire 求字典出现的前缀个数】hihocoder 1014 Trie树
Link:http://hihocoder.com/problemset/problem/1014 #include using namespace std; typedef long long LL; const int N = 1e5+5; const int M = 26; struct Tire{ struct Node{ int nex[M];原创 2017-08-21 14:19:19 · 270 阅读 · 0 评论 -
【Ac自动机 查询是否存在一个字典中的字符串】hihocoder 1036 Trie图
Link:http://hihocoder.com/problemset/problem/1036?sid=1157591 // 需要优化 #include using namespace std; const int N = 1000110; const int M = 26; const int root = 0; int n,len[N]; struct Aho { st原创 2017-08-23 19:23:58 · 315 阅读 · 0 评论 -
【manacher】hud 5371 Hotaru's problem
http://acm.hdu.edu.cn/showproblem.php?pid=5371 //#pragma comment(linker, "/STACK:102400000,102400000") #include #include #include #include #include #include #include #include #include #inc原创 2017-11-27 21:16:28 · 236 阅读 · 0 评论 -
【判段同构】字符串最小表示法
字符串的最小表示法是什么? 其实就是求字符串S的所以同构S'中字典序最小的一个,返回是最小的首字符的下标。 举一个例子:M(“bbcaab”) = 3。原创 2016-10-01 21:59:20 · 472 阅读 · 0 评论