1. #include <bits/stdc++.h>
  2. #define Sigma 30
  3. #define MAXN 500010
  4. #define int long long
  5. using namespace std ;
  6. int n, m, ans1, ans2 ; char s[MAXN], t[MAXN] ;
  7. struct PAM{
  8. int rt0, rt1, last, sz, f[MAXN], ch[MAXN][Sigma], fail[MAXN], len[MAXN] ;
  9. void Init(){
  10. sz = -1, rt0 = ++ sz, rt1 = ++ sz ;
  11. fail[rt0] = fail[rt1] = rt1, len[rt0] = 0, len[rt1] = -1, last = rt0 ;
  12. }
  13. PAM(){Init();}
  14. void Insert(int x, int p, char *s){
  15. int u = last ;
  16. while (s[p] != s[p - len[u] - 1]) u = fail[u] ;
  17. if (!ch[u][x]){
  18. int newq = ++ sz, fa = fail[u] ;
  19. while (s[p] != s[p - len[fa] - 1]) fa = fail[fa] ;
  20. fail[newq] = ch[fa][x], ch[u][x] = newq, len[newq] = len[u] + 2 ;
  21. }
  22. last = ch[u][x], f[last] ++ ;
  23. }
  24. void Solve() {
  25. for(int i=sz;i;--i) f[fail[i]] += f[i];
  26. }
  27. }p,q;
  28. void dfs(int x,int y) {
  29. if(x+y>2) {
  30. if(p.len[x]>ans1) {
  31. ans1=p.len[x];
  32. ans2=1;
  33. }
  34. else if(p.len[x]==ans1) {
  35. ans2++;
  36. }
  37. }
  38. for(int i=1;i<=26;i++)
  39. if(p.ch[x][i] && q.ch[y][i]) dfs(p.ch[x][i],q.ch[y][i]);
  40. }
  41. signed main() {
  42. ios::sync_with_stdio(false);
  43. cin>>n>>m>>s+1>>t+1;
  44. for(int i=1;i<=n;i++) p.Insert(s[i]-'a'+1,i,s);
  45. for(int i=1;i<=m;i++) q.Insert(t[i]-'a'+1,i,t);
  46. p.Solve(); q.Solve();
  47. dfs(1,1);dfs(0,0);
  48. cout<<ans1<<" "<<ans2<<endl;
  49. }

[P5555] 秩序魔咒 - 回文自动机,DFS的更多相关文章

  1. 回文自动机 + DFS --- The 2014 ACM-ICPC Asia Xi’an Regional Contest Problem G.The Problem to Slow Down You

    The Problem to Slow Down You Problem's Link: http://acm.hust.edu.cn/vjudge/problem/viewProblem.actio ...

  2. The Preliminary Contest for ICPC Asia Xuzhou 2019 G Colorful String(回文自动机+dfs)

    这题建立一棵回文树,然后用dfs搜索答案,但是有一点需要注意,就是打vis的标记时,如果标记为1,那么在好几个节点都对同一个字符i打过标记,此时的搜索从字符i点回溯,回到它的父亲节点,搜索其它的字符, ...

  3. [JSOI2013] 快乐的 JYY - 回文自动机,DFS

    #include <bits/stdc++.h> #define Sigma 30 #define MAXN 500010 #define int long long using name ...

  4. 回文树(回文自动机PAM)小结

    回文树学习博客:lwfcgz    poursoul 边写边更新,大概会把回文树总结在一个博客里吧... 回文树的功能 假设我们有一个串S,S下标从0开始,则回文树能做到如下几点: 1.求串S前缀0~ ...

  5. 后缀自动机/回文自动机/AC自动机/序列自动机----各种自动机(自冻鸡) 题目泛做

    题目1 BZOJ 3676 APIO2014 回文串 算法讨论: cnt表示回文自动机上每个结点回文串出现的次数.这是回文自动机的定义考查题. #include <cstdlib> #in ...

  6. [模板] 回文树/回文自动机 && BZOJ3676:[Apio2014]回文串

    回文树/回文自动机 放链接: 回文树或者回文自动机,及相关例题 - F.W.Nietzsche - 博客园 状态数的线性证明 并没有看懂上面的证明,所以自己脑补了一个... 引理: 每一个回文串都是字 ...

  7. BZOJ2342[Shoi2011]双倍回文——回文自动机

    题目描述 输入 输入分为两行,第一行为一个整数,表示字符串的长度,第二行有个连续的小写的英文字符,表示字符串的内容. 输出 输出文件只有一行,即:输入数据中字符串的最长双倍回文子串的长度,如果双倍回文 ...

  8. 字符串数据结构模板/题单(后缀数组,后缀自动机,LCP,后缀平衡树,回文自动机)

    模板 后缀数组 #include<bits/stdc++.h> #define R register int using namespace std; const int N=1e6+9; ...

  9. bzoj千题计划306:bzoj2342: [Shoi2011]双倍回文 (回文自动机)

    https://www.lydsy.com/JudgeOnline/problem.php?id=2342 解法一: 对原串构建回文自动机 抽离fail树,从根开始dfs 设len[x]表示节点x表示 ...

随机推荐

  1. EF CORE中复杂类型的映射

    实体映射时,遇到复杂类型,可选择下述方法处理: NotMapped,跳过映射 在复杂类型上声明 [Owned],但仅限该复杂类型是全部由简单值类型组成的 自定义序列化方法   示例: IPInfo使用 ...

  2. scrapy 当当网 爬虫

    前言 好久没有写实战博客了,因为前几个月在公司实习,博客更新就耽搁了下来,现在又受疫情影响无法返校,但是技能还是不能丢的,今天就写一篇使用scrapy爬取当当网的实战练习吧. 创建scrapy项目 目 ...

  3. JavaScript之DOM基础

    概述 DOM(Document Object Model)文档对象模型,针对Html和XML的文档的对象API,是一项 W3C (World Wide Web Consortium) 标准.文档对象模 ...

  4. 网易MuMu模拟器不显示Menu(菜单)键的解决办法

    解决方法一: 前提:需要一个键盘 步骤: 1.直接按下键盘上的Menu键. 解决方法二: 前提:需要Root之后的文件浏览器 步骤: 1.在文件管理器中打开 /System 文件夹: 2.复制 bui ...

  5. Android中实现自定义View组件并使其能跟随鼠标移动

    场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建An ...

  6. PR2018制作电子相册

    PR2018制作电子相册 新建序列,自定义的参数 重置工作区域的面板 调节声音的大小 剪辑区域小图标的功能介绍 1,点亮状态表示可以自动对齐吸附,方便拼接视频,2,图标表示视频接音频同时选中的,不点亮 ...

  7. P5840 [COCI2015]Divljak

    // powered by c++11 // by Isaunoya #include <bits/stdc++.h> #define rep(i, x, y) for (register ...

  8. HTML速查

    HTML 基本文档 <!DOCTYPE html> <html> <head> <title>文档标题</title> </head& ...

  9. export default和export的使用方法

    Node中 向外暴露成员,使用module.exports和exports module.exports = {} Node中导入模块 var 名称 = require('模块标识符') 在ES6中 ...

  10. 吴裕雄--天生自然 python开发学习笔记:Git安装配置流程