博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj2774 sa模版
阅读量:6939 次
发布时间:2019-06-27

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

学习地址:http://blog.csdn.net/yxuanwkeith/article/details/50636898

#include
#include
#include
#include
#include
using namespace std;const int maxn=400010;char s[maxn],s1[maxn],s2[maxn];int ans,tax[maxn],tp[maxn],sa[maxn],ra[maxn],H[maxn],n,m;void rsort(){ for(int i=0;i<=m;++i)tax[i]=0; for(int i=1;i<=n;++i)tax[ra[tp[i]]]++; for(int i=1;i<=m;++i)tax[i]+=tax[i-1]; for(int i=n;i>=1;--i)sa[tax[ra[tp[i]]]--]=tp[i];}int cmp(int x,int y,int w){
return tp[x]==tp[y]&&tp[x+w]==tp[y+w];}void pre(){ for(int i=1;i<=n;++i)ra[i]=s[i]-'a'+1,tp[i]=i; m=32;rsort(); for(int w=1,p=1,i;p
w)tp[++p]=sa[i]-w; rsort();swap(ra,tp);ra[sa[1]]=p=1; //这里换一下才方便由这一次的ra得到下一次的ra; for(i=2;i<=n;++i)ra[sa[i]]=cmp(sa[i],sa[i-1],w)?p:++p; } int j,k=0; for(int i=1;i<=n;H[ra[i++]]=k) for(k=k?k-1:k,j=sa[ra[i]-1];s[i+k]==s[j+k];++k);}int main(){ scanf("%s%s",s1+1,s2+1); int len1=strlen(s1+1),len2=strlen(s2+1); for(int i=1;i<=len1;++i)s[i]=s1[i]; s[len1+1]='a'+30; for(int i=1;i<=len2;++i)s[i+len1+1]=s2[i]; n=len1+len2+1; pre();ans=0; //for(int i=1;i<=n;++i)cout<
<<' '<
<

 

转载于:https://www.cnblogs.com/dibaotianxing/p/8196504.html

你可能感兴趣的文章
js 完美兼容浏览器的复制功能
查看>>
jdk1.6下使用sardine和jackrabbit-webdav的问题
查看>>
[Unity3d]socket通信 切换到web版本时报错SecurityException解决办法
查看>>
[Unity3D插件]2dtoolkit系列二 动画精灵的创建以及背景图的无限滚动
查看>>
谈谈spring中bean的名字
查看>>
Vue Element表单绑定(二)表单验证1
查看>>
Unix sed笔记
查看>>
macOS 10.12.x + Dell P2416D开启自定义 HiDPI
查看>>
图灵奖简介、2012年图灵奖得主及其贡献领域简介
查看>>
小工具推荐
查看>>
TiFlash & TiSpark?那都是 AP 团队开的坑 !
查看>>
(荷兰)彼得·冯·门施:博物馆学的研究对象
查看>>
我的友情链接
查看>>
查看Chrome浏览器缓存的方法
查看>>
Kubernetes权威指南之Kubernetes API详解
查看>>
修改windows service的启动类型
查看>>
***工具集合
查看>>
限流熔断技术选型:从Hystrix到Sentinel
查看>>
python写入和读取csv文件
查看>>
如何配置tomcat群集节点之间简单进行会话共享?
查看>>