![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
KMP
Michael_GLF
AFOing
展开
-
POJ2406 Power String(KMP)
传送门 【题目分析】 相当于是求字符串的最小循环节,应用了KMP求最小循环节的知识。 看一个例子: 有这张图可以知道,因为nxt表示前缀与后缀相同的长度,所以只要虚线之前的部分相同,那么就可以开始循环证明相等。 可以发现,如果len(s)-nxt(s)能整除len(s)的话,那么这就是循环节长度。 【代码~】 #include<bits/stdc++.h> usin...原创 2019-01-02 12:12:31 · 128 阅读 · 0 评论 -
洛谷2375 【NOI2014】动物园(KMP)
传送门 【题目分析】 nxt数组就是存储的失配位置,所以只用根据题目意思,求出每个位置的nxt并一直跳直到这个前(后)缀长度小于串长的一半即可统计答案,记得+1。 【代码~】 #include<bits/stdc++.h> using namespace std; typedef long long LL; const int MAXN=1e6+10; const int M...原创 2018-12-28 00:22:34 · 272 阅读 · 0 评论 -
KMP算法的一点学习笔记
博主太菜了,看不懂后缀数组就先滚回来看看KMP。 (假设各位不会什么字符串哈希) 对于子串查找这类问题,如果我单纯询问一个字符串s1中出现了多少次s2,暴力方法很好想,直接固定起点向后枚举,如果在跳到长度为s2之前就出现不同点,那么这个起点就不行,起点向右挪一位,重复这个操作直到跑到(s2-s1+1)的位置。 但这个算法的复杂度非常高,最高可达到O(nm),显然无法解决n>=1000的...原创 2018-11-30 21:55:45 · 175 阅读 · 0 评论