zoukankan      html  css  js  c++  java
  • 【bzoj1031】[JSOI2007]字符加密Cipher

    只要求sa

     1 #include<algorithm>
     2 #include<cstdlib>
     3 #include<cstring>
     4 #include<cstdio>
     5 #include<cmath>
     6 using namespace std;
     7  
     8 #define N 200010
     9  
    10 int wa[N],wb[N],ws[N],wv[N];
    11 int sa[N],r[N];
    12 char str[N],s[N];
    13  
    14 int m;
    15  
    16 int cmp(int *r,int a,int b,int l)
    17 {
    18     return r[a]==r[b] && r[a+l]==r[b+l];
    19 }
    20  
    21 void da(int *r,int n,int m)
    22 {
    23     int i,j,p,*x=wa,*y=wb,*t;
    24     for (i=0;i<m;i++) ws[i]=0;
    25     for (i=0;i<n;i++) ws[x[i]=r[i]]++;
    26     for (i=1;i<m;i++) ws[i]+=ws[i-1];
    27     for (i=n-1;i>=0;i--) sa[--ws[x[i]]]=i;
    28     for (j=1,p=1;p<n;j*=2,m=p)
    29     {
    30         for (p=0,i=n-j;i<n;i++) y[p++]=i;
    31         for (i=0;i<n;i++) if (sa[i]>=j) y[p++]=sa[i]-j;
    32         for (i=0;i<n;i++) wv[i]=x[y[i]];
    33         for (i=0;i<m;i++) ws[i]=0;
    34         for (i=0;i<n;i++) ws[wv[i]]++;
    35         for (i=1;i<m;i++) ws[i]+=ws[i-1];
    36         for (i=n-1;i>=0;i--) sa[--ws[wv[i]]]=y[i];
    37         for (t=x,x=y,y=t,p=1,x[sa[0]]=0,i=1;i<n;i++)
    38             x[sa[i]]=cmp(y,sa[i-1],sa[i],j) ? p-1 : p++;
    39     }
    40     return ;
    41 }
    42  
    43 int main()
    44 {
    45     scanf("%s",str);
    46     strcat(s,str);
    47     strcat(s,str);
    48     int n=strlen(s);
    49     s[n]=1;
    50     for (int i=0;i<=n;i++)
    51      {
    52          r[i]=s[i];
    53          if (r[i]>m)
    54              m=r[i];
    55      }
    56     for (int i=0;i<=n;i++)
    57     {
    58         r[i]=s[i];
    59         m=max(m,r[i]);
    60     }
    61     int l=strlen(str);
    62     da(r,n+1,m+1);
    63     for (int i=0;i<=n;i++)
    64         if (sa[i]<l)
    65             printf("%c",s[sa[i]+l-1]);
    66     return 0;
    67 }
  • 相关阅读:
    Mac OS X下GnuPlot的安装
    为PHP编译imap扩展
    jQuery做个TextBox自动完成条
    sql 查询模块
    WinForm控件查找奇思
    支持拼音检索的TextBox扩展控件使用
    自定义控件重写Listbox实现item图标变换和item点击事件
    支持拼音检索的TextBox扩展控件
    (转)SendMessage API
    使用C#获取CPU及硬盘序列号的源代码
  • 原文地址:https://www.cnblogs.com/yangjiyuan/p/5370050.html
Copyright © 2011-2022 走看看