题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2946

建出 n-1 个后缀自动机一起跑呗。

代码如下:

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. int const xn=;
  6. int n,lst[],cnt[],fa[][xn<<],l[][xn<<],go[][xn<<][],nw[];//<<1!!
  7. char s[][xn];
  8. void add(int t,int w)
  9. {
  10. int p=lst[t],np=++cnt[t]; lst[t]=np; l[t][np]=l[t][p]+;
  11. for(;p&&!go[t][p][w];p=fa[t][p])go[t][p][w]=np;
  12. if(!p)fa[t][np]=;
  13. else
  14. {
  15. int q=go[t][p][w];
  16. if(l[t][q]==l[t][p]+)fa[t][np]=q;
  17. else
  18. {
  19. int nq=++cnt[t]; l[t][nq]=l[t][p]+;
  20. memcpy(go[t][nq],go[t][q],sizeof go[t][q]);
  21. fa[t][nq]=fa[t][q]; fa[t][q]=fa[t][np]=nq;
  22. for(;go[t][p][w]==q;p=fa[t][p])go[t][p][w]=nq;
  23. }
  24. }
  25. }
  26. void build(int t)
  27. {
  28. lst[t]=; cnt[t]=;
  29. int len=strlen(s[t]+);
  30. for(int i=;i<=len;i++)add(t,s[t][i]-'a');
  31. }
  32. bool trans(int j)
  33. {
  34. int w=s[n][j]-'a';
  35. for(int i=;i<n;i++)
  36. {
  37. if(!go[i][nw[i]][w])return ;
  38. nw[i]=go[i][nw[i]][w];
  39. }
  40. return ;
  41. }
  42. int main()
  43. {
  44. scanf("%d",&n);
  45. for(int i=;i<=n;i++)
  46. {
  47. scanf("%s",s[i]+);
  48. if(i<n)build(i);
  49. }
  50. int ans=,len=strlen(s[n]+);
  51. for(int i=,j;i<=len;i++)
  52. {
  53. for(j=;j<n;j++)nw[j]=;
  54. for(j=i;j<=len;j++)if(!trans(j))break;
  55. ans=max(ans,j-i);
  56. }
  57. printf("%d\n",ans);
  58. return ;
  59. }

bzoj 2946 公共串 —— 后缀自动机的更多相关文章

  1. BZOJ 2946: [Poi2000]公共串( 后缀自动机 )

    一个串建后缀自动机, 其他串在上面跑, 然后用当前串跑的去更新全部 ------------------------------------------------------------------ ...

  2. bzoj 2946 [Poi2000]公共串——后缀自动机

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2946 对每个串都建一个后缀自动机,然后 dfs 其中一个自动机,记录同步的话在别的自动机上走 ...

  3. BZOJ 2946 [Poi2000]公共串 ——后缀自动机

    任意选择一个串作为模式串,构建出后缀自动机. 然后用其他的串在后缀自动机上跑匹配. 然后就到了理解后缀自动机性质的时候. 在某一个节点的最大值是可以沿着parent树上传的. 然后用dp[i][j]表 ...

  4. 【bzoj2946】[Poi2000]公共串 后缀自动机

    [Poi2000]公共串 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1386  Solved: 620[Submit][Status][Discus ...

  5. BZOJ 2946 POI2000 公共串 后缀自动机(多串最长公共子串)

    题意概述:给出N个字符串,每个串的长度<=2000(雾...可能是当年的年代太久远机子太差了),问这N个字符串的最长公共子串长度为多少.(N<=5) 抛开数据结构,先想想朴素做法. 设计一 ...

  6. BZOJ2946 [Poi2000]公共串(后缀自动机)

    Description          给出几个由小写字母构成的单词,求它们最长的公共子串的长度. 任务: l        读入单词 l        计算最长公共子串的长度 l        输 ...

  7. bzoj4032/luoguP4112 [HEOI2015]最短不公共子串(后缀自动机+序列自动机上dp)

    bzoj4032/luoguP4112 [HEOI2015]最短不公共子串(后缀自动机+序列自动机上dp) bzoj Luogu 题解时间 给两个小写字母串 $ A $ , $ B $ ,请你计算: ...

  8. BZOJ 4032: [HEOI2015]最短不公共子串 后缀自动机 暴力

    4032: [HEOI2015]最短不公共子串 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4032 Description 在虐各种最 ...

  9. bzoj 4032 [ HEOI 2015 ] 最短不公共子串 —— 后缀自动机+序列自动机

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4032 序列自动机其实就是每个位置记录一下某字母后面第一个出现位置,为了子序列能尽量长. 对字 ...

随机推荐

  1. Windows 命令集合

    查看端口占用 查看8080端口使用情况: C:\>netstat -aon|findstr "8080" 结果:TCP    0.0.0.0:8080           0 ...

  2. Django之sitemap

    ##########settings.py SITE_ID=1 # Application definition # taggit tag INSTALLED_APPS = [ 'myblog', ' ...

  3. gitlab多人协同工作

    gitlab多人协同工作 本文为亨利向<Git权威指南>的作者蒋鑫老师的答疑邮件写成. 这里特别感谢蒋鑫老师对我询问gitlab的协同工作流程问题的详细解答. 蒋鑫老师的细致专业的解答让我 ...

  4. ANDROID 推送到底哪家强(转)

    之前在群里有同学问我关于推送的一些问题,解答之后我觉得这个话题还挺有用,因为几乎大部分人都会遇到这个问题,那姑且就写篇文章总结给你们吧. 1. 为什么要用推送? 推送功能可谓是现如今任何一个 App ...

  5. 基于imgAreaSelect的用户图像截取

    前言:想到用户资料中一般有个图像自我截取的部分,为什么要截取呢,因为好看了.so,经过我各种百度,各种参考,终于打工搞成了,写下纪念纪念,让以后拿来就用也好. 一:想前端ui这东西,我就懒得说话了,哎 ...

  6. js 检测客户端网速

    <!doctype html> <html> <head> <meta http-equiv=Content-Type content="text/ ...

  7. jQuery+bootstrap实现美化警告/确认/提示对话框插件

    http://www.html580.com/12067/demo http://craftpip.github.io/jquery-confirm/

  8. gridcontrol 之标题 GroupPanel设置 (标题设置,屏蔽右键)

    GroupPanel设置 例如gridcontrol显示标题:“gridcontrol小例子” gridView1.GroupPanelText="gridcontrol小例子"; ...

  9. 【题解】[CF718C Sasha and Array]

    [题解]CF718C Sasha and Array 对于我这种喜欢写结构体封装起来的选手这道题真是太对胃了\(hhh\) 一句话题解:直接开一颗线段树的矩阵然后暴力维护还要卡卡常数 我们来把\(2 ...

  10. mysql 二:操作表

    的存储.在操作表之前,首先要用选定数据库,因为表都是建立在对应的数据库里面的.在这里我们使用之前建立的test数据库 mysql> use test; Database changed 创建表的 ...