zoukankan      html  css  js  c++  java
  • Evanyou Blog 彩带

      洛谷的模板传送门

    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int N=2000200;
    int lena,lenb,next[N];
    char a[N],b[N];
    int main()
    {
      scanf("%s%s",a,b);
      lena=strlen(a);
      lenb=strlen(b);
      next[0]=next[1]=0;
      int k=0;
      for(int i=1;i<lenb;i++){
        while(k&&b[i]!=b[k])
          k=next[k];
        next[i+1]=b[i]==b[k]?++k:0;
      }
      k=0;
      for(int i=0;i<lena;i++){
        while(k&&a[i]!=b[k])
          k=next[k];
        k+=a[i]==b[k]?1:0;
        if(k==lenb)
          printf("%d
    ",i-lenb+2);
      }
      for(int i=1;i<=lenb;i++)
        printf("%d ",next[i]);
      return 0;
    }
  • 相关阅读:
    二月12日
    十日冲刺
    十日冲刺
    十日冲刺
    十日冲刺
    十日冲刺
    十日冲刺
    十日冲刺
    一周进度条博客
    十天冲刺
  • 原文地址:https://www.cnblogs.com/cytus/p/8459852.html
Copyright © 2011-2022 走看看