后缀数组模板题

 #include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std; #define N 100010 int wa[N],wb[N],ws[N],wv[N];
int sa[N],rank[N],height[N];
int r[N];
char s[N]; int cmp(int *r,int a,int b,int l)
{
return r[a]==r[b] && r[a+l]==r[b+l];
} void da(int *r,int n,int m)
{
int i,j,p,*x=wa,*y=wb,*t;
for (i=;i<m;i++) ws[i]=;
for (i=;i<n;i++) ws[x[i]=r[i]]++;
for (i=;i<m;i++) ws[i]+=ws[i-];
for (i=n-;i>=;i--) sa[--ws[x[i]]]=i;
for (j=,p=;p<n;j<<=,m=p)
{
for (p=,i=n-j;i<n;i++) y[p++]=i;
for (i=;i<n;i++) if (sa[i]>=j) y[p++]=sa[i]-j;
for (i=;i<n;i++) wv[i]=x[y[i]];
for (i=;i<m;i++) ws[i]=;
for (i=;i<n;i++) ws[wv[i]]++;
for (i=;i<m;i++) ws[i]+=ws[i-];
for (i=n-;i>=;i--) sa[--ws[wv[i]]]=y[i];
for (t=x,x=y,y=t,p=,x[sa[]]=,i=;i<n;i++)
x[sa[i]]=cmp(y,sa[i-],sa[i],j) ? p- : p++;
}
return ;
} void calheight(int *r,int n)
{
int i,j,k=;
for (i=;i<=n;i++) rank[sa[i]]=i;
for (i=;i<n;height[rank[i++]]=k)
for (k ? k-- : ,j=sa[rank[i]-];r[i+k]==r[j+k];k++);
return ;
} int main()
{
scanf("%s",s);
int n=strlen(s);
for (int i=;i<n;i++)
r[i]=s[i]-'a'+;
r[n]=;
da(r,n+,);
calheight(r,n);
for (int i=;i<=n;i++)
printf("%d ",sa[i]+);
printf("\n");
for (int i=;i<=n;i++)
printf("%d ",height[i]);
return ;
}

最新文章

  1. SQL查询第m条到第n条的方法
  2. JAVA基础知识之Annotation
  3. Retrieving Out Params From a Stored Procedure With Python
  4. css3动画中的steps值详解
  5. jquery的height()和javascript的height总结,js获取屏幕高度
  6. 【转】object标签和embed标签
  7. django 模板if判断的时候==两边需要有空格
  8. openerp 常见问题 OpenERP为什么选择了时区后时间还是不对?(转载)
  9. UVALive 6533
  10. 尝鲜delphi开发android/ios_环境搭建
  11. iOS开发——网络编程Swift篇&amp;(四)异步Get方式
  12. ExtJs 添加员工 实例 ---- 锚点布局 anchor 可自动伸缩
  13. 怎样做出通用的pos小票打印程序
  14. error Infos
  15. Java语言跨平台原理
  16. WebGL学习(3) - 3D模型
  17. jquery选择基础
  18. pandas DataFrame apply()函数(2)
  19. Springboot中实现策略模式+工厂模式
  20. es6学习笔记7--Set

热门文章

  1. Linux C下变量和常量的存储的本质
  2. live555简介
  3. docker配置国内加速器
  4. PHP:压缩 Zip
  5. Tensor数据类型
  6. LeetCode 123. Best Time to Buy and Sell Stock III (stock problem)
  7. npm 发包
  8. 59. Spring Boot Validator校验【从零开始学Spring Boot】
  9. Codeforces Round #304 (Div. 2)-D. Soldier and Number Game,素因子打表,超时哭晕~~
  10. [luoguP1472] 奶牛家谱 Cow Pedigrees(DP)