博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【URAL】1297 Palindrome
阅读量:5263 次
发布时间:2019-06-14

本文共 1168 字,大约阅读时间需要 3 分钟。

1 #include
2 #include
3 #include
4 using namespace std; 5 #define MAXN 2200 6 #define MAXM 12 7 char s[MAXN],t[MAXN]; 8 int wa[MAXN],wb[MAXN],wv[MAXN],ws[MAXN]; 9 int sa[MAXN],rk[MAXN],height[MAXN]; 10 int st[MAXN][MAXM]; 11 inline bool cmp(int *r,int a,int b,int len) 12 { 13 return r[a]==r[b]&&r[a+len]==r[b+len]; 14 } 15 void SA(int n,int m) 16 { 17 int i,j,p,*x=wa,*y=wb,*t; 18 for(i=0;i
=0;i--) 25 sa[--ws[x[i]]]=i; 26 for(j=p=1;p
<<=1,m=p) 27 { 28 for(p=0,i=n-j;i
=j) 33 y[p++]=sa[i]-j; 34 } 35 for(i=0;i
=0;i--) 42 sa[--ws[wv[i]]]=y[i]; 43 for(t=x,x=y,y=t,x[sa[0]]=0,p=i=1;i
height[q]?q:p; 79 } 80 } 81 } 82 int RMQ(int i,int j) 83 { 84 int k; 85 if(i>j) 86 swap(i,j); 87 i++; 88 for(k=0;(1<
<=j-i+1;k++); 89 k--; 90 i=st[i][k]; 91 j=st[j-(1<
>1;104 for(i=ans=st=0;i
ans)108 {109 ans=(j<<1)-1;110 st=i-j+1;111 }112 if(i)113 {114 j=RMQ(rk[i],rk[len-i]);115 if(j<<1>ans)116 {117 ans=j<<1;118 st=i-j;119 }120 }121 }122 for(i=st;i

转载于:https://www.cnblogs.com/DrunBee/archive/2012/07/05/2578452.html

你可能感兴趣的文章
Java 中 静态方法与非静态方法的区别
查看>>
echarts饼图显示百分比
查看>>
JMS消息
查看>>
Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台
查看>>
php上传文件及头像预览
查看>>
大四java实习生的一些经历
查看>>
线程池的概念
查看>>
Oracle_Statspack性能诊断工具
查看>>
转获取sql维护的表关系
查看>>
Java 序列化
查看>>
Java 时间处理实例
查看>>
Java 多线程编程
查看>>
Java 数组实例
查看>>
mysql启动过程
查看>>
2017前端面试题总结
查看>>
Http GetPost网络请求
查看>>
SWIFT国际资金清算系统
查看>>
Sping注解:注解和含义
查看>>
站立会议第四天
查看>>
如何快速掌握一门技术
查看>>