
KMP
文章平均质量分 51
ssl_fuyang
ヾ(◍°∇°◍)ノ゙
展开
-
子串拆分【KMP】【暴力】
>Link ybtoj子串拆分 >Description 已知一个字符串 ,求它有多少个形如 A+B+A 的子串( len(A)≥k,len(B)≥q )。 位置不同其他性质相同的子串算不同子串,位置相同但拆分不同的子串算同一子串。 1≤∣S∣≤150001≤|S|≤150001≤∣S∣≤15000 >解题思路 看到这个数据范围,O(n2)O(n^2)O(n2)是可以过的 然后我们就先O(n)O(n)O(n)找一个左端点lll,跑一遍以lll为起点的KMP,然后在暴力枚举右端点,看看原创 2021-10-25 11:08:03 · 241 阅读 · 0 评论 -
周期长度和【KMP】
>Link luogu P3435 ybtoj周期长度和 >Description 对于一个仅含小写字母的字符串 a,p 为 a 的前缀且 p≠a,那么我们称 p 为 a 的 proper 前缀。 规定字符串 Q(可以是空串)表示 a 的周期,当且仅当 Q 是 a 的 proper 前缀且 a 是 Q+Q 的前缀。 例如 ab 是 abab 的一个周期,因为 ab 是 abab 的 proper 前缀,且 abab 是 ab+ab 的前缀。 求给定字符串所有前缀的最大周期长度之和。 >原创 2021-10-24 20:32:03 · 253 阅读 · 0 评论 -
重复子串【KMP】
>Link ybtoj重复子串 >解题思路 先对字符串进行预处理,预处理出串自己与自己匹配的最长前缀后缀(kmp思想) 然后我们可以发现,如果一个串(比如"abcde"),没有连续重复的子串,就输出1 一个串(比如"ababab"),有连续重复的子串,在整个串中,1..pn1..p_n1..pn 和 n−pnn-p_nn−pn 是有交叉部分的,且不相交的部分为"ab",其实就是最小的连续重复子串(也是运用了前缀后缀的性质)。如果n可以整除这个连续重复子串的长度(n−pnn-p_nn−pn原创 2021-07-01 16:42:01 · 1100 阅读 · 0 评论 -
子串查找【KMP】
>Link ybtoj子串查找 >解题思路 一道kmp的模板题 >代码 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define N 1000010 using namespace std; int p[N], la, lb, ans; string a, b; int main() { cin >> a &原创 2021-07-01 16:30:41 · 123 阅读 · 0 评论 -
KMP字符串匹配【模板】【KMP】
>Link luogu P3375 >解题思路 模板题 >代码 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define N 1000010 using namespace std; int next[N], f[N], n, m; char s1[N], s2[N]; int main() { scanf ("%s%s原创 2020-11-05 21:03:28 · 174 阅读 · 0 评论