首页 > 其他分享 >kmp板子

kmp板子

时间:2022-11-07 22:14:34浏览次数:32  
标签:lb la int 板子 kmp include strlen

主串a,模式串b,求b在a中出现的位置

 

#include<iostream>
#include <algorithm>
#include <cstring>
using namespace std;
 const int N=1e6+4;
int la,lb;
int f[N],p[N];
 char a[N],b[N];
 
 void solve(){
     int i,j; la=strlen(a+1),lb=strlen(b+1);
     
     p[1]=0; j=0;
     for(i=2;i<=lb;i++){
         while(j>0&&b[i]!=b[j+1]) j=p[j];
         if(b[i]==b[j+1]) j++;
         p[i]=j;
     }
    
    j=0;
     for(i=1;i<=la;i++){
         while(j>0&&a[i]!=b[j+1]) j=p[j];
         if(a[i]==b[j+1]) j++;
         f[i]=j;
         
         if(f[i]==lb) cout<<i-lb+1<<'\n';
     }
 }
 signed main(){
     cin>>a+1>>b+1; solve();
     for(int i=1;i<=lb;i++) cout<<p[i]<<' ';
 }

 

标签:lb,la,int,板子,kmp,include,strlen
From: https://www.cnblogs.com/towboa/p/16867643.html

相关文章

  • 【模板】Z 函数(扩展 KMP)
    postedon2022-08-0823:29:53|under模板|source#include<cstdio>#include<cstring>#include<algorithm>usingnamespacestd;typedeflonglongLL;intn,......
  • Hash表板子
    #include<bits/stdc++.h>usingnamespacestd;#definelllonglong#defineullunsignedlonglongullrx=1e9+7;llrand(llx,lly){rx*=998244353;returnrx%(y-x+......
  • KMP 自动机,孤独的自动机(同时也是CF1721E的题解)
    给定字符串\(s\),以及\(q\)个串\(t_i\),求将\(s\)分别与每个\(t_i\)拼接起来后,最靠右的\(|t_i|\)个前缀的border长度。询问间相互独立。\(|s|\leq10^6,q......
  • KMP算法
    见csdn博主v_JULY_v的详解如下:https://blog.csdn.net/v_JULY_v/article/details/7041827?ops_request_misc=%257B%2522request%255Fid%2522%253A%25221667467393168001806......
  • HDU 1686Oulipo ———————Hash or KMP
    OulipoOulipoTimeLimit:3000/1000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):22302    AcceptedSubmission(s):86......
  • 学习笔记:KMP
    引入KMP是一种字符串匹配算法,可以在将近线性的时间复杂度内进行字符串匹配。此类问题通常有一个文本串$S$和一个模式串$P$构成,说白了就是在$S$中匹配$T$,S.find(T)......
  • C++——KMP算法
    ......
  • 扩展kmp——神奇的字符串匹配
    一、引言一个算是冷门的算法(在竞赛上),不过其算法思想值得深究。二、前置知识kmp的算法思想,具体可以参考这篇日报。trie树(字典树)。三、经典扩展kmp模板问题:扩展k......
  • 普及-的并查集(都是板子)
        #include<bits/stdc++.h>usingnamespacestd;constintN=1e5+7;structNode{ intbn,ed,t;}a[N];intf[N];intfind(intx){returnx==f[x]?x:......
  • rmq板子
    typedeflonglongLL;constexprinlineintlg2(LLx){returnsizeof(LL)*8-1-__builtin_clzll(x);}template<typenameT,size_tN,size_tK>structRangeQ......