BZOJ2565: 最长双回文串(Manacher)
Description
输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1)且X和Y都是回文串。
Input
一行由小写英文字母组成的字符串S。
Output
Sample Input
Sample Output
解题思路:
是求两个回文串相加的双回文最大长度。
一直在想两个回文串相交的情况,结果发现是不存在的,那样只会形成更大的一个回文串,蒟蒻就是蒟蒻
记录最右点和最左点。
注意更新!!
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using std::min;
using std::max;
char a[];
int l[];
int ls[];
int rs[];
int f[];
int ans;
int cnt;
int main()
{
scanf("%s",a+);
int len=strlen(a+);
l[cnt]='&';
for(int i=;i<=len;i++)
{
l[++cnt]='&';
l[++cnt]=a[i];
}
l[++cnt]='&';
int mx=;
f[]=;
for(int i=;i<=cnt;i++)
{
f[i]=min(f[mx*-i],f[mx]+mx-i);
while(f[i]+i<=cnt&&l[f[i]+i]==l[i-f[i]])
f[i]++;
if(mx+f[mx]<i+f[i])
mx=i;
rs[f[i]+i-]=max(rs[f[i]+i-],f[i]-);
ls[i-f[i]+]=max(ls[i-f[i]+],f[i]-);
}
for(int i=;i<=cnt;i+=)
ls[i]=max(ls[i],ls[i-]-);
for(int i=cnt;i>=;i-=)
rs[i]=max(rs[i],rs[i+]-);
for(int i=;i<=cnt;i+=)
ans=max(ans,rs[i]+ls[i]);
printf("%d\n",ans);
return ;
}
BZOJ2565: 最长双回文串(Manacher)的更多相关文章
- BZOJ2565:最长双回文串(Manacher)
Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同). 输入长度为n的串S,求S的最长双回文子串T ...
- BZOJ2565最长双回文串——manacher
题目描述 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同).输入长度为n的串S,求S的最长双回文子串T,即可将T分为两 ...
- BZOJ2565 最长双回文串 【Manacher】
BZOJ2565 最长双回文串 Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为"abc",逆序为"c ...
- 【BZOJ2565】最长双回文串 Manacher
[BZOJ2565]最长双回文串 Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同).输入长度为 ...
- BZOJ 2565: 最长双回文串 [Manacher]
2565: 最长双回文串 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1842 Solved: 935[Submit][Status][Discu ...
- BZOJ.2565.[国家集训队]最长双回文串(Manacher/回文树)
BZOJ 洛谷 求给定串的最长双回文串. \(n\leq10^5\). Manacher: 记\(R_i\)表示以\(i\)位置为结尾的最长回文串长度,\(L_i\)表示以\(i\)开头的最长回文串长 ...
- bzoj 2565: 最长双回文串 manacher算法
2565: 最长双回文串 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem. ...
- [国家集训队]最长双回文串 manacher
---题面--- 题解: 首先有一个直观的想法,如果我们可以求出对于位置i的最长后缀回文串和最长前缀回文串,那么我们枚举分界点然后合并前缀和后缀不就可以得到答案了么? 所以我们的目标就是求出这两个数列 ...
- 【bzoj2565】最长双回文串 Manacher+树状数组
原文地址:http://www.cnblogs.com/GXZlegend/p/6802558.html 题目描述 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc ...
随机推荐
- Zookeeper简单概念介绍
过去,每个应用都是一个CPU.一个主机上的单一系统.然而今天,随着大数据和云计算时代的到来,不论什么相互独立的程序都可以运行在多个计算机上.然而面临的问题是,协调这些集群的系统比在单一主机上要复杂的多 ...
- swift 笔记 (十一) —— 方法(类,结构体,枚举)
Methods (方法) 实例方法(Instance Methods) 我认为看到这里.我们唯能八一八的就是swift的自做主张的行为了,反正它就是会以各种方式帮助我们来完毕让代码看起来非常奇怪的事情 ...
- 改动npm包管理器的registry为淘宝镜像(npm.taobao.org)
起因 安装了node.安装了npm之后,官方的源实在是 太慢了! 看了看淘宝的npm镜像, http://npm.taobao.org/ 居然说让我再下载一个cnpm,要不然就每次都得install ...
- centos7 出现please make your choice from 1 to enter..
忘了截图了 刚出现的~~ 输入1 回车 输入q 回车 最后回车 便可以正常启动
- PullToRefreshListView中嵌套ViewPager滑动冲突的解决
PullToRefreshListView中嵌套ViewPager滑动冲突的解决 最近恰好遇到PullToRefreshListView中需要嵌套ViewPager的情况,ViewPager 作为头部 ...
- Python(十) 函数式编程: 匿名函数、高阶函数、装饰器
一.lambda表达式 lambda parameter_list: expression # 匿名函数 def add(x,y): return x+y print(add(1,2)) f = la ...
- 解决Visual Studio-IIS Express 支持局域网访问
- 如何把本地的项目推送到github上面去
前题:本地已经建好了项目,但电脑上没有安装git (windows 系统) 1.首页从网上下载git 并安装. 2.进入项目所在的文件夹,右键鼠标 3.新建.gitignore文件 touch .g ...
- Codeforces Round #240 (Div. 2) 题解
A: 1分钟题,往后扫一遍 int a[MAXN]; int vis[MAXN]; int main(){ int n,m; cin>>n>>m; MEM(vis,); ; i ...
- Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-qvc66dfs/supervisor/
# 安装supervisor 出错 pip3 install supervisor # 解决 sudo pip3 install supervisor