随笔分类 -  KMP

摘要:GT考试 阅读全文
posted @ 2018-08-31 14:47 Caturra 阅读(196) 评论(0) 推荐(0)
摘要:在一个Text串中找出Pattern串E以满足EAEBE,A B可以是任意串 看一眼觉得woc好难,后来看一下样例AB为空也可以 找观察一下E既是前缀也是后缀,很容易联想到next 最优情况EEE,那就是3 × next[j] == j A,B任取,那只要进一步保证 3 × next[j] 0&&P 阅读全文
posted @ 2018-02-09 21:30 Caturra 阅读(129) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/chenxiwenruo/p/3546457.html 阅读全文
posted @ 2018-02-09 19:15 Caturra 阅读(141) 评论(0) 推荐(0)
摘要:只要KMP里对f[i]进行限制即可 阅读全文
posted @ 2018-02-09 18:38 Caturra 阅读(142) 评论(0) 推荐(0)
摘要:```C++ /*H E A D*/ int nxt[maxn]; char P[maxn]; void buildNext(){ nxt[1]=0; int j=0,m=strlen(P+1); rep(i,2,m){ while(j&&P[i]!=P[j+1])j=nxt[j]; if(P[i]==P[j+1])j++; nxt[i]=j; } } int main(){... 阅读全文
posted @ 2018-02-09 17:25 Caturra 阅读(95) 评论(0) 推荐(0)
摘要:如果循环节存在那在前缀部分也肯定存在 如果循环节存在那至少是可以匹配的 而next是维护最大前缀的,意会意会 注意一定要先判整除,即使别的题目保证是存在循环的 特意画了一张灵魂草图帮助理解 阅读全文
posted @ 2018-02-09 17:09 Caturra 阅读(165) 评论(0) 推荐(0)
摘要:题目的匹配应该也要看成一个文本串与另一个模式串的匹配过程 Text是以当前i结尾的后缀来匹配Pattern的前缀(非真) 这里的Pattern肯定是可以匹配成功的,直接由next来保证(next总是当前结尾的最大前缀,恰好满足递推的需要) (说的不是很准确,就是kmp匹配过程时使用的方法) 举个栗子 阅读全文
posted @ 2018-02-09 15:46 Caturra 阅读(116) 评论(0) 推荐(0)
摘要:循环移位的套路操作就是一份折开变两份 C++ / H E A D / void match(){ int n=strlen(T+1); int m=strlen(P+1); int j=0; rep(i,1,n){ if(flag)break; while(j 0&&(j==m||T[i]!=P[j 阅读全文
posted @ 2018-02-09 01:52 Caturra 阅读(138) 评论(0) 推荐(0)
摘要:```C++ /*H E A D*/ int nxt[maxn],f[maxn],ans; char T[maxn],P[maxn]; void init(){ int m=strlen(P+1); int j=0; nxt[1]=0; rep(i,2,m){ while(j>0&&P[i]!=P[j+1]) j=nxt[j]; if(P[i]==P[j+1])j++; nxt... 阅读全文
posted @ 2018-02-09 01:31 Caturra 阅读(108) 评论(0) 推荐(0)