这题用马拉车也可做 只是很久没用马拉车 已经不会用了QAQ

还是直接上回文自动机吧

只需要正反各建一次自动机

记录以某个点为断点的最长回文串 拼起来就是一个双回文串了 最后扫一遍更新最大值就行

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
const long long mod=1e9+7;
const int N=26;
int ans;
struct Palindromic_Tree
{int next[maxn][N];int fail[maxn];int cnt[maxn];int num[maxn];int len[maxn];int S[maxn];int last;int n;int p;int newnode(int l){memset(next[p],0,sizeof next[p]);cnt[p]=0;num[p]=0;len[p]=l;return p++;}void init(){p=0;newnode(0);newnode(-1);last=0;n=0;S[n]=-1;fail[0]=1;}int get_fail(int x){while(S[n-len[x]-1]!=S[n])x=fail[x];return x;}void add(int c){c-='a';S[++n]=c;int cur=get_fail(last);if(!next[cur][c]){int now=newnode(len[cur]+2);fail[now]=next[get_fail(fail[cur])][c];next[cur][c]=now;num[now]=num[fail[now]]+1;}last=next[cur][c];cnt[last]++;}void count(){for(int i=p-1;i>=0;i--)cnt[fail[i]]+=cnt[i];}
}pam;
char s[maxn];
int l[maxn],r[maxn];
int main()
{scanf("%s",s);int n=strlen(s);pam.init();for(int i=0;i<n;i++){pam.add(s[i]);l[i]=pam.len[pam.last];}pam.init();for(int i=0;i<n;i++){pam.add(s[n-i-1]);r[n-i-1]=pam.len[pam.last];}for(int i=0;i<n-1;i++){ans=max(ans,l[i]+r[i+1]);}printf("%d\n",ans);return 0;
}

BZOJ2565 回文自动机相关推荐

  1. BZOJ2565 最长双回文子串 回文自动机,回文树

    bzoj2565: 最长双回文串 题意 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为"abc",逆序为"cba" ...

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

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

  3. 【回文自动机】bzoj3676 [Apio2014]回文串

    回文自动机讲解!http://blog.csdn.net/u013368721/article/details/42100363 pam上每个点代表本质不同的回文子串.len(i)代表长度,cnt(i ...

  4. 算法学习:回文自动机

    [定义] [自动机] 参照AC自动机 [前置知识] [AC自动机] [manacher] 其实不学这两个也可以,但是学过之后会更方便理解 [解决问题] 主要解决回文串的问题 能求出   字符串中回文子 ...

  5. 回文树(回文自动机) - URAL 1960 Palindromes and Super Abilities

     Palindromes and Super Abilities Problem's Link:  http://acm.timus.ru/problem.aspx?space=1&num=1 ...

  6. 【知识总结】回文自动机(Palindrome_Automaton)

    参考资料:Palindromic Tree--回文树[处理一类回文串问题的强力工具](请注意,其中似乎有一些错误) 回文自动机似乎和回文树是同一个东西qwq? 回文自动机(PAM)是一种处理回文串的工 ...

  7. 论如何优雅的处理回文串 - 回文自动机详解

    写在前面 最近无意中看到了这个数据结构,顺便也就学习了一下. 而且发现网上关于这个算法的描述有很多地方是错的,在这里做了一些更正. 处理字符串的算法很多: KMP,E-KMP,AC自动机,后缀三兄弟: ...

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

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

  9. BZOJ4044 Luogu P4762 [CERC2014]Virus Synthesis (回文自动机、DP)

    好难啊..根本不会做..基本上是抄Claris... 题目链接: (bzoj)https://www.lydsy.com/JudgeOnline/problem.php?id=4044 (luogu) ...

最新文章

  1. Pytorch翻车记录:单卡改多卡踩坑记!
  2. C语言中extern关键字的使用
  3. Java Garbage Collection
  4. 交通运输线(LCA)
  5. nodejs异步读取文件与同步读取文件的区别
  6. charles请求入参中有乱码
  7. Oracle 行转列pivot 、列转行unpivot 的Sql语句总结
  8. IOC容器-Autofac在MVC中实现json方式注入使用
  9. EnableViewState和ViewStateMode
  10. 如何删除双系统(超级详细,手把手教学)
  11. 原生JS实现刮刮乐功能
  12. 「学习笔记」回文树/回文自动机(Palindromic Tree)
  13. Mac电脑如何使用时间机器进行备份?
  14. A.O.史密斯净水新品闪耀德国IFA展 斩获年度产品创新成果奖
  15. Kali、Ubuntu、银河、Uos、deepin、Centos7(8) 等 Linux 如何使用 蓝牙
  16. 广度优先搜索(BFS)---农夫与牛
  17. 如何使用vpd来dump波形
  18. [Elasticsearch] 过滤查询以及聚合(Filtering Queries and Aggregations)
  19. 什么是SSL/TLS ?
  20. Python基础重点复习(4)

热门文章

  1. Rsync 服务部署与参数详解
  2. Qt客户端套接字QTcpSocket通过bind指定本地ip
  3. 一点资讯战略升级:否定百度收购同时与微博牵手
  4. win10安装Microsoft Office 2016(64位)提示已安装Microsoft Office 2016(32位)
  5. 【工具】1063- 前端40+精选VSCode插件,总有几个你未拥有!
  6. 数据库原理及应用——图书销售系统数据库设计
  7. 2015年中国最具竞争力机器人控制器企业10强
  8. LeetCode_1677_数组中重复的数字
  9. Python飞机大战(究极迫害版)
  10. 【USB笔记】USB 2.0 帧开始包Start-of-Frame Packets