2565: 最长双回文串

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 1377  Solved: 714
[Submit][Status][Discuss]

Description

顺序和逆序读起来完全一样的串叫做回文串。比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同)。
输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1)且X和Y都是回文串。

Input

一行由小写英文字母组成的字符串S。

Output

一行一个整数,表示最长双回文子串的长度。

Sample Input

baacaabbacabb

Sample Output

12
利用回文树统计以i为结尾的最长回文串长度和以i为开始的最长回文串的长度
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <math.h>
#include <stdio.h>using namespace std;
typedef long long int LL;
const int maxn=1e5+5;
char str[maxn];
struct Tree
{int next[maxn][26];int fail[maxn];int len[maxn];int s[maxn];int last;int p;int n;int new_node(int x){memset(next[p],0,sizeof(next[p]));len[p]=x;return p++;}void init(){p=0;new_node(0);new_node(-1);last=0;n=0;s[0]=-1;fail[0]=1;}int get_fail(int x){while(s[n-len[x]-1]!=s[n])x=fail[x];return x;}int add(int x){x-='a';s[++n]=x;int cur=get_fail(last);if(!(last=next[cur][x])){int now=new_node(len[cur]+2);fail[now]=next[get_fail(fail[cur])][x];next[cur][x]=now;last=now;}return len[last];}
}tree;
int s1[maxn];
int s2[maxn];
int main()
{while(scanf("%s",str)!=EOF){int len=strlen(str);tree.init();memset(s1,0,sizeof(s1));memset(s2,0,sizeof(s2));for(int i=0;i<len;i++){s1[i]=tree.add(str[i]);}tree.init();for(int i=len-1;i>=0;i--){s2[i]=tree.add(str[i]);}int ans=0;for(int i=0;i<len;i++){ans=max(ans,s1[i]+s2[i+1]);}printf("%d\n",ans);}return 0;
}

HYSBZ 2565 最长双回文串 (回文树)相关推荐

  1. HYSBZ - 2565 最长双回文串(回文自动机)

    题目链接:点击查看 题目大意:给出一个字符串 s ,求最长双回文子串,题目规定最长双回文子串 t 可以拆成左右两部分,满足两部分都是回文串 题目分析:一开始读错题了,以为是双回文串本身也需要是回文串, ...

  2. HYSBZ 2565 最长双回文串

    题意:找到一个最长回文子串,该子串能够分成两长度大于0的部分,每部分都是一个回文串 题解:回文树维护一个以i为起点和终点的最长回文串长度数组即可 #include<bits/stdc++.h&g ...

  3. bzoj 2565: 最长双回文串 manacher算法

    2565: 最长双回文串 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem. ...

  4. BZOJ 2565: 最长双回文串

    2565: 最长双回文串 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1769  Solved: 895 [Submit][Status][Dis ...

  5. 2565: 最长双回文串

    Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为"abc",逆序为"cba",不相同). 输 ...

  6. BZOJ 2565 最长双回文串 Manacher

    题目大意: 定义双回文串G是指一个可以被拆分成两个部分(S和T)的字符串G = S + T, 且S和T都是回文串的串, G自己本身可以不是回文串 给出一个长度为n ( 2 <= n <= ...

  7. 洛谷P4555 [国家集训队]最长双回文串(manacher 线段树)

    题意 题目链接 Sol 我的做法比较naive..首先manacher预处理出以每个位置为中心的回文串的长度.然后枚举一个中间位置,现在要考虑的就是能覆盖到i - 1的回文串中 中心最靠左的,和能覆盖 ...

  8. HYSBZ - 3676 回文串(回文自动机)

    题目链接:点击查看 题目大意:求出回文子串中 出现次数*长度 的最大值 题目分析:回文自动机直接搞维护最大值就是答案了 代码: #include<iostream> #include< ...

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

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

最新文章

  1. excel同一单元格怎么换行_Excel工作表中最经典的10个应用,小技巧,大作用
  2. 第七十四期:国内SaaS企业终于活成了自己讨厌的样子!
  3. 元气骑士如何获得机器人成就皮肤_元气骑士:获得成就叹息之墙,花圃免费开,附带5000蓝币奖励...
  4. C++新特性探究(二):override、final
  5. 《Cisco/H3C交换机高级配置与管理技术手册》目录
  6. python3基本语法规则,Python中的语法规则
  7. 【转】kubernetes 中 deployment 支持哪些键值
  8. 惠普2t服务器硬盘,HP DL388 Gen8系列服务器硬盘超过2T的分区方法
  9. 【android】集成腾讯的播放器SDK
  10. 网站为什么要做外链?
  11. 大学生html5实训报告,大学生实训心得体会范文(精选5篇)
  12. python 爬虫 短信验证码
  13. 如何在HTML页面中引入一首网易云音乐以及B站的视频
  14. 全球与中国PMN-PT单晶市场深度研究分析报告
  15. UBOOT移植详细解析(转)
  16. php45 上海北诺,Bio-Gel P6 生物胶P100 Bio-Rad 150-1940
  17. 解决 Vant中 输入框(Field)组件获取不到输入值
  18. 阿里云ECS共享型n4服务器1核2G怎么样?
  19. windows下快速实现labelImg环境配置
  20. 凯屋qq速记员 下载

热门文章

  1. Remote Sensing投稿经历
  2. Kafka | Java 消费者是如何管理TCP连接的? | 极客时间
  3. 人工智能入门算法逻辑回归学习笔记
  4. 那些与三维激光扫描有关的建模
  5. Xception实现动物识别(TensorFlow)
  6. Maxent模型学习
  7. Unity画面像素化shader
  8. 转载:Linux下用mutt给QQ邮箱发匿名邮件
  9. 手把手教你用docker 搭建zoolkepper 和 dubbo 的测试环境
  10. php ppt read_PHP生成PPT