KMP
nuoyanli
做题,反思,做题;刷题,总结,刷题;
展开
-
Censor SCU - 4438 (KMP)
题目来源: https://vjudge.net/contest/297070#problem/C http://acm.scu.edu.cn/soj/problem.action?id=4438 Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long textpp. H...原创 2019-04-23 20:44:45 · 1612 阅读 · 3 评论 -
HDU2087剪花布条(不重叠KMP匹配
题目来源 当原串S为 aaaa ,模式串为 aa 时算作出现了 2 次. 终点是: 当j==plen 时, j=nxt[j] 参考代码: #include <bits/stdc++.h> using namespace std; const int N=1e6+10; #define end '\n' #define IOS ios::sync_with_stdio(0) int nx...原创 2019-07-15 17:13:08 · 1326 阅读 · 0 评论 -
Oulipo && HihoCoder - 1015 -KMP算法(可重叠KMP当匹配到一个j = nxt[j]
当原串S为 aaaa ,模式串为 aa 时算作出现了 3 次. 终点是: 当j==plen 时, j=nxt[j] #include <bits/stdc++.h> using namespace std; const int N=1e6+10; #define end '\n' #define IOS ios::sync_with_stdio(0) int nxt[N]; void ...原创 2019-07-15 17:18:05 · 1302 阅读 · 0 评论 -
Number Sequence(KMP,求模式串P在原串S中出现的第一个位置
题目描述: 参考代码: #include <bits/stdc++.h> using namespace std; const int N=1e6+10; #define end '\n' #define IOS ios::sync_with_stdio(0) int nxt[N],t,n,m,p[N],s[N]; void get_next() { int j = 0, k...原创 2019-07-15 17:53:24 · 1443 阅读 · 0 评论 -
HDU3746 Cyclic Nacklace(KMP,补全最小循环节
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3746 题意:一串字符,只能在串首和串尾添加字符,最少添加几个字符前后字符串连接起来会是一个循环节组成的串 思路: 那么我们最少需要添加的就是循环节大小减去不足循环节的串大小(只需要考虑尾部 i % ( i - next[i] ) == 0 && next[i] != 0 则说明字符...原创 2019-07-16 09:42:52 · 1335 阅读 · 0 评论 -
HDU1358 Period(KMP,找循环节并且输出位置)
题目来源:http://blog.csdn.net/riba2534/article/details/77985061 题意: 给了一个长度为n的字符串,然后让你找每一个前缀(从第二个字母开始)是否是循环的,如果是就把 当前的位置和循环节的长度输出 思路: 就是 next 数组的使用,令 j=i−next[i] ,如果 i%j==0 就证明存在循环节,循环节的长度为 i/j ps:数组开小报超时,...原创 2019-07-16 10:05:06 · 1367 阅读 · 0 评论 -
POJ2406 Power Strings(KMP,判断字符串的最大循环周期
题目来源:http://poj.org/problem?id=2406 思路: 利用KMP算法,求字符串的next数组,若len可以被len - next[len]整除,则最大循环次数为len/(len - next[len]),否则为1 参考代码: #include <cstdio> #include <cstring> using namespace std; cons...原创 2019-07-16 10:35:41 · 1552 阅读 · 0 评论 -
POJ2752 Seek the Name, Seek the Fame(KMP,前后缀匹配
题目来源:http://poj.org/problem?id=2752 题目描述: 题意: 给定一个字符串s,求有哪些长度的s的前缀,同时也是s的后缀。 思路: 对于字符串s的第i个字符s[i],next[i]定义为字符s[i]前面最多有多少个连续的字符和字符串s从初始位置开始的字符匹配。那么我们可以从后到前匹配前缀和后缀,如果前缀与后缀匹配,则下一个前缀与后缀匹配的字符串必然在前缀中。 参考代...原创 2019-07-17 10:39:26 · 1330 阅读 · 0 评论 -
2019年ccpc秦皇岛赛区(J题)重现赛1010
题意: 求的是后缀的循环节长度B和循环节出现的总长度(包含不完整循环节)A,给定a和b求,最大的aA-bB,显然kmp反过来后跑一下求出next数组,枚举前缀,那么i就是循环节出现的总长度,而i−next[i]就是循环节长度了,直接更新最大值,a,b和ans都需要ll,答案可能有负数,初值要设为-1e18。 代码: // nuoyanli #include <algorithm> #...原创 2019-09-28 15:36:56 · 1608 阅读 · 0 评论