zoukankan      html  css  js  c++  java
  • hdu 1711

    读入优化有3s多。

     1 #include <cstdio>
     2 #include <cctype>
     3 #define maxn 1000010
     4 #define maxm 10010
     5 
     6 int n, m;
     7 int aa[maxn], bb[maxm], f[maxm];
     8 
     9 void gn( int &rt ) {
    10     char ch;
    11     char opt;
    12     while( !isdigit(ch=getchar()) ) opt=ch;
    13     rt=ch-'0';
    14     while( isdigit(ch=getchar()) )
    15         rt=rt*10+ch-'0';
    16     if( opt=='-' ) rt=-rt;
    17 }
    18 
    19 void getfail() {
    20     f[0] = f[1] = 0;
    21     for( int i=1, j; i<m; i++ ) {
    22         j = f[i];
    23         while( j && bb[i]!=bb[j] ) j=f[j];
    24         f[i+1] = bb[i]==bb[j] ? j+1 : 0;
    25     }
    26 }
    27 int kmp() {
    28     for( int i=0,j=0; i<n; i++ ) {
    29         while( j && aa[i]!=bb[j] ) j=f[j];
    30         if( aa[i]==bb[j] ) j++;
    31         if( j==m ) return i-m+2;
    32     }
    33     return -1;
    34 }
    35 
    36 int main() {
    37     int T;
    38     scanf( "%d", &T );
    39     while( T-- ) {
    40         scanf( "%d%d", &n, &m );
    41         for( int i=0; i<n; i++ )
    42             gn(aa[i]);
    43         for( int i=0; i<m; i++ )
    44             gn(bb[i]);
    45         getfail();
    46         printf( "%d
    ", kmp() );
    47     }
    48 }
    View Code

    (注意,getfail()中f[i+1] = P[i]==P[j] ? j+1 : 0;)

  • 相关阅读:
    期权标的概率密度函数
    Girsanov Theorem
    拉马努金恒等式
    波动率的三类模型
    stack(栈) and heap(堆)
    covar of lognormal variables
    BS 相关的一些近似公式
    布朗运动的一些特殊性质
    排序算法
    Mac node.js
  • 原文地址:https://www.cnblogs.com/idy002/p/4328275.html
Copyright © 2011-2022 走看看