博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 2565 manacher
阅读量:7051 次
发布时间:2019-06-28

本文共 1554 字,大约阅读时间需要 5 分钟。

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
 

Data Constraint

 
 

Hint

【样例说明】

从第二个字符开始的字符串aacaabbacabb可分为aacaa与bbacabb两部分,且两者都是回文串。
 
【数据范围】
    对于10%的数据,2≤|S|≤103。
  对于30%的数据,2≤|S|≤104。
  对于100%的数据,2≤|S|≤105。

 

 

思路:

先做一遍MANACHER,然后枚举分界点(为#)

那么以这个点为分界的最长双回文串会由最左边的能覆盖到这个点的串和最右边的能覆盖到这个点的串组成

那么扫两遍求出每个点最左和最右能覆盖到它的回文串中心。(就是反过来求以每个点为中心的回文串能覆盖哪些点

然后枚举即可

 

 

#include
#include
#include
#include
#include
using namespace std;char s[200011];int r[200011],lm[200011],rm[200011];int i,n,x,z,q,len,j;char c;void Read(){ while(c=getchar(),c<'a'||c>'z'); s[++n]='#'; s[++n]=c; while(c=getchar(),c>='a'&&c<='z'){ s[++n]='#'; s[++n]=c; } s[++n]='#';}void Manacher(){ int i,len,l,k; len=0; for(i=1;i<=n;i++){ if(len
=1&&i+l<=n)l++; r[i]=l; } else{ l=min(len-i+1,r[k+k-i]); while(s[i+l]==s[i-l]&&i-l>=1&&i+l<=n)l++; r[i]=l; } if(i+r[i]-1>len){ len=i+r[i]-1; k=i; } }}int main(){ Read(); Manacher(); r[0]=0; len=0; for(i=1;i<=n;i++){ if(i+r[i]-1>len){ for(j=len+1;j<=i+r[i]-1;j++)lm[j]=i; len=i+r[i]-1; } if(len==n)break; } len=n+1; for(i=n;i>=1;i--){ if(i-r[i]+1
q)q=z/2; } printf("%d\n",q);}

 

 

转载于:https://www.cnblogs.com/applejxt/p/3813454.html

你可能感兴趣的文章
如何处理地图投影转换
查看>>
区块链技术公司 看区块链数据如何实现安全共享
查看>>
HttpClient-4.5总结(1)
查看>>
Linux_异常_03_Failed to restart iptables.service: Unit not found.
查看>>
LeetCode 169 Majority Element(主要元素)(vector、map)
查看>>
mysql中的几个常用的方法
查看>>
Google 的Android Splash
查看>>
2- 快速上手Linux玩转典型应用- 搭建Linux环境
查看>>
树莓派 之 微信聊天机器人(ItChat)
查看>>
如何学习一门编程语言
查看>>
Java__线程---基础知识全面实战---坦克大战系列为例
查看>>
js时间戳转换日期格式和日期计算
查看>>
真的,移动端尺寸自适应与dpr无关
查看>>
***实用函数:PHP explode()函数用法、切分字符串,作用,将字符串打散成数组
查看>>
JQuery属性与样式——.html()和.text()
查看>>
游戏中的碰撞检测
查看>>
python 回溯法 子集树模板 系列 —— 2、迷宫问题
查看>>
1455: C语言实验题――数字串求和
查看>>
halcon学习笔记——(12)图像分割
查看>>
Html 文档模式
查看>>