zoukankan      html  css  js  c++  java
  • 【HDU1711】Number Sequence

    题面

    https://vjudge.net/problem/HDU-1711

    题解

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #define ri register int
    #define N 1000500
    using namespace std;
    int T,nex[N],n,m;
    int s[N],t[N];
    
    void getnex(){
      nex[0]=nex[1]=0;
      for (ri i=2;i<=n;i++) {
        int j=nex[i-1];
        while (j && s[j+1]!=s[i]) j=nex[j];
        if (s[j+1]==s[i]) nex[i]=j+1; else nex[i]=0;
      }
    }
    
    int main(){
      scanf("%d",&T);
      while (T--) {
        scanf("%d",&m);scanf("%d",&n);
        for (ri i=1;i<=m;i++) scanf("%d",&t[i]);
        for (ri i=1;i<=n;i++) scanf("%d",&s[i]);
        getnex();
        int k=0;
        bool ss=0;
        for (ri i=1;i<=m;i++) {
          while (k && s[k+1]!=t[i]) k=nex[k];
          if (s[k+1]==t[i]) {
            k++;
            if (k==n) {
              k=nex[k];
              printf("%d
    ",i-n+1);
              ss=1;
              break;
            }
          }
        }
        if (!ss) puts("-1");
      }
      return 0;
    }
  • 相关阅读:
    python操作Redis详解
    python操作SQLAlchemy
    设计模式详解及Python实现
    计算机基础
    DRF内置过滤组件与排序组件结合使用
    LTE
    LTE
    LTE
    LTE
    LTE
  • 原文地址:https://www.cnblogs.com/shxnb666/p/11279657.html
Copyright © 2011-2022 走看看