对于这道题,将两个字符串直接合并成为一个字符串,分别记录连个字符串结束的位置。

首先,应用黑暗圣典的模板,我们可以顺利得到height,rank,sa三个数组。

之后直接扫描1-n所有的位置,选出来一个,符合“两者都在不同子串的最大长度即可”。

此时我们会发现,sa数组记录了每个子串开头的位置,可以用于判断。

#include<iostream>
#include<stdio.h>
#include<string>
#include<string.h>
#include<vector>
#include<algorithm>
using namespace std; const long long MAXN=;
const long long INF=1e8+;
char s[MAXN];
int sa[MAXN],t[MAXN],t2[MAXN],c[MAXN],n;
int rankk[MAXN],height[MAXN];
void getHeight()
{
int k=;
for(int i=;i<n;++i)rankk[sa[i]]=i;
for(int i=;i<n;++i)
{
if(k)k--;
int j=sa[rankk[i]-];
while(s[i+k]==s[j+k])k++;
height[rankk[i]]=k;
}
} void build_sa(int m)
{
int i,*x=t,*y=t2; for(int i=;i<m;++i)c[i]=;
for(int i=;i<n;++i)c[x[i]=s[i]]++;
for(int i=;i<m;++i)c[i]+=c[i-];
for(int i=n-;i>=;--i)sa[--c[x[i]]]=i;
for(int k=;k<=n;k*=)
{
int p=;
for(int i=n-k;i<n;++i)y[p++]=i;
for(int i=;i<n;++i)if(sa[i]>=k)y[p++]=sa[i]-k; for(int i=;i<m;++i)c[i]=;
for(int i=;i<n;++i)c[x[y[i]]]++;
for(int i=;i<m;++i)c[i]+=c[i-];
for(int i=n-;i>=;i--)sa[--c[x[y[i]]]]=y[i];
swap(x,y);
p=;x[sa[]]=;
for(int i=;i<n;++i)
{
x[sa[i]]=y[sa[i-]]==y[sa[i]]&&y[sa[i-]+k]==y[sa[i]+k]?p-:p++; }
if(p>=n)break;
m=p;
}
} int main()
{
// cin.sync_with_stdio(false);
scanf("%s",s);
int len=strlen(s);
scanf("%s",s+len);
int len2=strlen(s);
n=len2+;
build_sa();
getHeight();
int maxx=-;
for(int i=;i<n;++i)
{
// cout<<height[i]<<ends<<s+sa[i]<<endl;
if((sa[i]>=len&&sa[i-]<len)||(sa[i]<len&&sa[i-]>=len))maxx=max(maxx,height[i]);
}
cout<<maxx<<"\n";
// cout<<s<<endl;
// cout<<len<<ends<<len2<<endl;
//
return ;
}

最新文章

  1. Python3基础 assert关键字 成功啥事没有,失败了就报错
  2. OC8_代理基本概念
  3. Android开发在使用第三方推送的时候出现INSTALL_FAILED_VERSION_DOWNGRADE
  4. 【HDOJ】4261 Estimation
  5. sqlite3 C接口
  6. ios-Ineligible Devices 不被识别的设备
  7. 对js原型对象的拓展和原型对象的重指向的区别的研究
  8. CCF 201609-4 交通规划
  9. 一场完美的“秒杀”:API加速的业务逻辑
  10. xml是什么,为什么要用xml
  11. tomcat会话之持久化会话管理器
  12. 小账本APP——软件项目风险管理及解决办法案例
  13. 安全之路 —— 借助DLL进行远程线程注入实现穿墙与隐藏进程
  14. NC 5系查询引擎做报表
  15. 【算法专题】工欲善其事必先利其器—— 常用函数和STL
  16. jquery 取子节点及当前节点属性值
  17. 获取分组后统计数量最多的纪录;limit用法;sql执行顺序
  18. php函数substr_replace中文乱码的替代解决方法
  19. mybatis模糊查询防止SQL注入
  20. ubuntu 搜狗输入法成功安装

热门文章

  1. C#中动态创建数据库和数据表,很经典【转】
  2. Arduino连接pH计
  3. SublimeText相关配置
  4. CSS单词换行and断词,你真的完全了解吗
  5. FusionCharts使用教程:为JavaScript图表提供数据
  6. windows 下设置MTU数值
  7. WebChromeClient
  8. JS案例练习 — 给div添加样式选择功能
  9. JAVA时间加工类
  10. postman传递参数的问题