博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3160 最长公共子串
阅读量:7227 次
发布时间:2019-06-29

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

3160 最长公共子串

 

 时间限制: 2 s
 空间限制: 128000 KB
 题目等级 : 大师 Master
 
 
 
题目描述 
Description

给出两个由小写字母组成的字符串,求它们的最长公共子串的长度。

输入描述 
Input Description

读入两个字符串

输出描述 
Output Description

输出最长公共子串的长度

样例输入 
Sample Input
yeshowmuchiloveyoumydearmotherreallyicannotbelieveit yeaphowmuchiloveyoumydearmother
样例输出 
Sample Output

27

数据范围及提示 
Data Size & Hint

单个字符串的长度不超过100000

分类标签 Tags 

 
   
模板题:
#include
#include
#include
using namespace std;const int N=2e5+10;int n,c[N],h[N],sa[N],tsa[N],rank[N],trank[N];char s[N];struct Suffix{ void DA(int maxx=256){ int p; for(int i=0;i<=maxx;i++) c[i]=0; for(int i=1;i<=n;i++) c[rank[i]=s[i]]++; for(int i=2;i<=maxx;i++) c[i]+=c[i-1]; for(int i=n;i;i--) sa[c[rank[i]]--]=i; trank[sa[1]]=p=1; for(int i=2;i<=n;i++){ if(rank[sa[i]]!=rank[sa[i-1]]) p++; trank[sa[i]]=p; } for(int i=1;i<=n;i++) rank[i]=trank[i]; for(int k=1;p
<<=1,maxx=p){ p=0; for(int i=n-k+1;i<=n;i++) tsa[++p]=i; for(int i=1;i<=n;i++) if(sa[i]>k) tsa[++p]=sa[i]-k; for(int i=0;i<=maxx;i++) c[i]=0; for(int i=1;i<=n;i++) trank[i]=rank[tsa[i]]; for(int i=1;i<=n;i++) c[trank[i]]++; for(int i=2;i<=maxx;i++) c[i]+=c[i-1]; for(int i=n;i;i--) sa[c[trank[i]]--]=tsa[i]; trank[sa[1]]=p=1; for(int i=2;i<=n;i++){ if(rank[sa[i]]!=rank[sa[i-1]]||rank[sa[i]+k]!=rank[sa[i-1]+k]) p++; trank[sa[i]]=p; } for(int i=1;i<=n;i++) rank[i]=trank[i]; } for(int i=1,k=0;i<=n;i++){ int j=sa[rank[i]-1]; while(s[i+k]==s[j+k]) k++; h[rank[i]]=k;if(k>0) k--; } } void work(){ scanf("%s",s+1);n=strlen(s+1); s[++n]='#';int T=n; scanf("%s",s+n+1);int t=strlen(s+n+1); n+=t; DA(); //min(两个Suffix的lcp){Suffix不包含'#'} int ans(0); for(int i=1;i<=n;i++){ if(ans
T&&sa[i-1]
T) ans=h[i]; } } printf("%d\n",ans); }}suffix;int main(){ suffix.work(); return 0;}

 

转载于:https://www.cnblogs.com/shenben/p/6596999.html

你可能感兴趣的文章
DNS的搭建
查看>>
Apache/Nginx 访问日志分析脚本
查看>>
Curator的使用
查看>>
第五章 集合类型
查看>>
我的友情链接
查看>>
nagios监控服务出现FLAPPING状态时无法发出邮件报警信息
查看>>
数据库链接字符串方法
查看>>
The DCI Architecture: A New Vision of Object-Oriented Programming(一篇具有里程碑式意义的论文)...
查看>>
RIP路由配置实例V2
查看>>
Bytescout Spreadsheet SDK for.NET
查看>>
我的友情链接
查看>>
Haproxy的三种保持客户端会话保持方式
查看>>
iOS的数学函数
查看>>
python 模块 chardet下载及介绍(转)
查看>>
能力工场--关于在JavaScript中使用EL表达式的问题
查看>>
NFS服务器设置
查看>>
s:iterator 中的status 使用方法
查看>>
cocos2d-x 源码剖析系列
查看>>
IT系统架构设计
查看>>
Nginx虚拟主机配置实践(一)
查看>>