题目: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. mac 升级系统后 ”任何来源“被取消了找回方法

    找回方法 终端输入: sudo spctl --master-disable

  2. TOML简介 (转)

    TOML的由来 配置文件的使用由来已久,从.ini.XML.JSON.YAML再到TOML,语言的表达能力越来越强,同时书写便捷性也在不断提升. TOML是前GitHub CEO, Tom Prest ...

  3. java List复制:浅拷贝与深拷贝

    Java的拷贝可以分为三种:浅拷贝(Shallow Copy).深拷贝(Deep Copy).延迟拷贝(Lazy Copy). 在java中除了基本数据类型之外(int,long,short等),还存 ...

  4. 九度OJ 1034:寻找大富翁 (排序)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5925 解决:2375 题目描述:     浙江桐乡乌镇共有n个人,请找出该镇上的前m个大富翁. 输入:     输入包含多组测试用例.   ...

  5. ftl总结

    当前项目前端是用freemarker,是第一次使用这种页面,一般语法不介绍,这里只是记录工作中遇到的问题 ---------2016.6.25-------------- 1.关于ftl字符串的问题 ...

  6. web项目中从不同的路径读取文件

    项目中的配置文件可以放在classpath下,webapp下获取其他任何一个指定的绝对地址,读取这些文件就从这三个地方去找.主要代码如下: private List<String> get ...

  7. mysql中Incorrect string value乱码问题解决方案

    mysql中Incorrect string value乱码问题解决方案   你是否遇到过类似以下错误? java.sql.SQLException: Incorrect string value: ...

  8. pip 安装模块报错解决

    系统版本 ubuntu  Kylin 16.04 LTS 报错1:安装pip3 安装 Django 总是提示time out,无法安装. 改用国内源: 豆瓣源: sudo pip3 install - ...

  9. Spring Boot2.0之统一处理web请求日志

    试问,你的项目中,如果有几万个方法,你还这么写log.info("name"+name+",age"+age )日志么?low~ 所以用AOP呀 1.首先创建个 ...

  10. IP地址-计算机网络

    如需转载请联系:fengxw6@mail2.sysu.edu.cn 未经许可,禁止转载. ---Sun Yat-sen University 冯兴伟 1.  MAC地址和IP地址都是全局的(全球分配) ...