tyvj 1860后缀数组
2016-01-10 08:50
281 查看
模板题
超时!!卡常神题!!!
ps :输出优化 要不40w输出会tle
超时!!卡常神题!!!
ps :输出优化 要不40w输出会tle
#include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<queue> #include<vector> #include<set> #include<map> #include<iostream> #include<algorithm> #define T 222222 using namespace std; char s[T]; int t1[T],t2[T],cc[T],sa[T],rank[T],height[T]; int len; bool cmp(int *y,int a,int b,int k) { int a1=y[a],b1=y[b]; int a2=a+k>=len?-1:y[a+k]; int b2=b+k>=len?-1:y[b+k]; return a1==b1&&a2==b2; } void make_sa() { int *x=t1,*y=t2,m=300; for(int i=0;i<m;i++)cc[i]=0; for(int i=0;i<len;i++)++cc[x[i]=s[i]]; for(int i=1;i<m;i++)cc[i]+=cc[i-1]; for(int i=len-1;~i;i--)sa[--cc[x[i]]]=i; for(int k=1;k<=len;k<<=1) { int p=0; for(int i=len-k;i<len;i++)y[p++]=i; for(int i=0;i<len;i++)if(sa[i]>=k)y[p++]=sa[i]-k; for(int i=0;i<m;i++)cc[i]=0; for(int i=0;i<len;i++)++cc[x[y[i]]]; for(int i=1;i<m;i++)cc[i]+=cc[i-1]; for(int i=len-1;~i;i--)sa[--cc[x[y[i]]]]=y[i]; swap(x,y);m=1;x[sa[0]]=0; for(int i=1;i<len;i++)x[sa[i]]=cmp(y,sa[i],sa[i-1],k)?m-1:m++; if(m>len)break; } } void make_height() { int k=0;height[0]=0; for(int i=0;i<len;i++)rank[sa[i]]=i; for(int i=0;i<len;i++) { if(!rank[i])continue; int j=sa[rank[i]-1]; if(k)k--; while(s[i+k]==s[j+k])k++; height[rank[i]]=k; } } void putt(int x) { if(!x)return; char c=x%10+'0'; putt(x/10); putchar(c); } int main() { scanf("%s",s); len=strlen(s); make_sa(); make_height(); for(int i=0;i<len;i++)putt(sa[i]+1),putchar(' ');cout<<endl; for(int i=0;i<len;i++) { if(height[i]==0) putchar('0'); else putt(height[i]); putchar(' '); } return 0; }
相关文章推荐
- 基于javascript实现彩票随机数生成(简单版)
- 微软泥垢了
- java(11)--内省
- 命名空间和using使用
- IP释放、更新、以及清除DNS
- python文件读写
- Node.js静态文件服务器改进版
- Win10最新版Build 11097曝光:主要调整底层架构
- [实战]MVC5+EF6+MySql企业网盘实战(26)——音乐列表
- 技术人的未来(一)——跳槽
- JqueryAjax登录实现
- 一则简单演示样例看Oracle的“无私”健壮性
- 2015 年你不可不知的 9 大开源事件!
- 估值十亿美元、1.5亿用户,公司CEO却跑路了
- Maven的初步使用以及命令行工具
- python轻松查到删除自己的微信好友
- 从头认识java-17.1 多线程
- bzoj 1911 [Apio2010]特别行动队(斜率优化+DP)
- Flask源码阅读(八)——请求钩子
- LeetCode Recover Binary Search Tree