• POJ2774 (后缀数组)


     1 #include<cstdio>
     2 #include<cstring>
     3 using namespace std;
     4 char a[250000],b[110000];
     5 int sa[250000],x[250000],wv[250000],ws[250000],h[250000],rank[250000],wa[250000],wb[250000];
     6 int cmp(int *r,int a,int b,int l){return (r[a]==r[b])&&(r[a+l]==r[b+l]);}
     7 void calheight(int n,int *rank)
     8 {
     9   int i,j,k=0;
    10   for(i=0;i<n;h[rank[i++]]=k)
    11   for(k?k--:0,j=sa[rank[i]-1];a[i+k]==a[j+k];k++);
    12 }
    13 void DA(char *r,int *sa,int n,int m)
    14 {
    15   int i,j,k,*x=wa,*y=wb,*t,p;
    16   for(i=0;i<m;i++)ws[i]=0;
    17   for(i=0;i<n;i++)ws[x[i]=r[i]]++;
    18   for(i=1;i<m;i++)ws[i]+=ws[i-1];
    19   for(i=n-1;i>=0;i--)sa[--ws[x[i]]]=i;
    20   for(j=1,p=1;p<n;j*=2,m=p)
    21   {
    22     for(p=0,i=n-j;i<n;i++)y[p++]=i;
    23     for(i=0;i<n;i++)if(sa[i]>=j)y[p++]=sa[i]-j;
    24     for(i=0;i<n;i++)wv[i]=x[y[i]];
    25     for(i=0;i<m;i++)ws[i]=0;
    26     for(i=0;i<n;i++)ws[wv[i]]++;
    27     for(i=1;i<m;i++)ws[i]+=ws[i-1];
    28     for(i=n-1;i>=0;i--)sa[--ws[wv[i]]]=y[i];
    29     for(t=x,x=y,y=t,p=1,x[sa[0]]=0,i=1;i<n;i++)
    30     x[sa[i]]=cmp(y,sa[i-1],sa[i],j)?p-1:p++;
    31   }
    32   calheight(n,x);
    33 }
    34 int main()
    35 {
    36   int la,lb,f_b,f_e,s_b,s_e,max,i,n;
    37   scanf("%s",a);
    38   la=strlen(a);
    39   scanf("
    ");
    40   scanf("%s",b);
    41   lb=strlen(b);
    42   f_b=0;
    43   f_e=la-1;
    44   a[la]='#';
    45   s_b=la;
    46   for(i=0;i<lb;i++)a[++la]=b[i];
    47   s_e=la;
    48   a[la+1]=0;
    49   DA(a,sa,la+1,256);
    50   //calheight(la+1); 
    51   max=-0x7fffffff;
    52   for(i=2;i<=la;i++)
    53   {
    54     if(h[i]>max&&((sa[i]>=f_b&&sa[i]<=f_e&&sa[i-1]>=s_b&&sa[i-1]<=s_e)||(sa[i]>=s_b&&sa[i]<=s_e&&sa[i-1]>=f_b&&sa[i-1]<=f_e)))max=h[i];
    55   }
    56   printf("%d",max);
    57   return 0;
    58 }
  • 相关阅读:
    MyEclipse修改默认的workspace路径
    对象池化技术 org.apache.commons.pool
    Java 简单工厂模式
    组装品入力
    引当日数和JAN日数的意思
    材料构成模块的做法
    在库移动和在库振替的意思
    组装品的特殊式样
    设计的尝试数据库・数据的更新
    定时器(Timer)文章收集转载(小雨论坛)
  • 原文地址:https://www.cnblogs.com/wjcwjc/p/4978252.html
Copyright © 2020-2023  润新知