题解:

首先我们写一个Manacher模板。。

然后我们可以把所有回文串的信息映射到左端点上,

每个点依此维护最长右连接回文串。

然后再顺着扫一遍就出解了。

代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 101000
using namespace std;
char ts[N],s[N<<1];
int n,len,p[N<<1];
void manacher()
{int i,j,k,mx=0,id;scanf("%s",ts+1);n=strlen(ts+1),len=n*2+1;s[0]='*',s[1]='~';for(i=1;i<=n;i++)s[i*2]=ts[i],s[i*2+1]='~';for(i=1;i<=len;i++){if(mx>i)p[i]=min(p[id*2-i],mx-i);else p[i]=1;while(s[i-p[i]]==s[i+p[i]])p[i]++;if(mx<i+p[i])mx=i+p[i],id=i;}return ;
}
int mx[N<<1],id,ans;
void ex_manacher()
{int i,j,k;for(i=1;i<=len;i++)mx[i]=i;for(i=0;i<=len;i++)mx[i-p[i]]=max(mx[i-p[i]],i);for(i=0;i<=len;i++){mx[i]=max(mx[i],id);id=mx[i];}for(i=0;i<=len;i++)ans=max(ans,mx[i+p[i]-1]-i);return ;
}
int main()
{
//  freopen("test.in","r",stdin);manacher();ex_manacher();printf("%d\n",ans);return 0;
}
复制去Google翻译翻译结果

【BZOJ2565】最长双回文串 Manacher相关推荐

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

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

  2. [国家集训队]最长双回文串 manacher

    ---题面--- 题解: 首先有一个直观的想法,如果我们可以求出对于位置i的最长后缀回文串和最长前缀回文串,那么我们枚举分界点然后合并前缀和后缀不就可以得到答案了么? 所以我们的目标就是求出这两个数列 ...

  3. BZOJ 2565 最长双回文串 Manacher

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

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

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

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

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

  6. 【BZOJ2565】最长双回文串(回文树)

    [BZOJ2565]最长双回文串(回文树) 题面 BZOJ 题解 枚举断点\(i\) 显然的,我们要求的就是以\(i\)结尾的最长回文后缀的长度 再加上以\(i+1\)开头的最长回文前缀的长度 至于最 ...

  7. BZOJ 2565: 最长双回文串

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

  8. 青橙 A1280. 最长双回文串

    A1280. 最长双回文串 时间限制:2.0s   内存限制:512.0MB   总提交次数:   AC次数:   平均分: 将本题分享到: 查看未格式化的试题   提交   试题讨论 试题来源 中国 ...

  9. HYSBZ 2565 最长双回文串 (回文树)

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

最新文章

  1. c语言logout_C++ 格式化日志输出实现代码
  2. H3C 7506E基于时间的分时段上网的ACL
  3. php链接mysql验证用户登录,PHP连接mysql验证用户名是否存在
  4. 计算4位数每位数相加之和(Python)
  5. Asp.net Ajax AutoComplete 控件的用法
  6. TT和LG编程设计模式之代理
  7. 『操作系统』微内核结构的操作系统几何?(优缺点)
  8. 黄仕沛经方医案医话精选(上) 王晓军 整理
  9. qt实现窗口拖动的两种思路
  10. 初识数据流 bit byte char三者的区别 java
  11. SpringBoot项目解决 log4j2 核弹漏洞
  12. ISO /TS 22163:2017轨道交通行业质量管理体系简介及相关标准资料
  13. 计算机切换用户界面,win7系统登录界面切换用户的方法
  14. numpy_absolute函数
  15. 老徐WEB:js入门学习 - 认识javascript
  16. uni-app触发点击事件
  17. 【阅读笔记】《深度学习》第一章:引言
  18. 程序员该如何有效的找工作?
  19. Ad hoc Test
  20. 企业内部文档共享平台-MM-WiKi

热门文章

  1. android微信登录用户绑定,微信授权登陆接入第三方App(步骤总结)Android
  2. RT-Thread 传感器软件包归类
  3. 苹果电话录到android,iphone通讯录导出到安卓手机教程
  4. 山东平度纵火案告破:村主任与地产商联手施暴
  5. 微信公众号配置网页授权域名报错:无法访问xxx指向的web服务器或虚拟主机的目录
  6. 解决“错误0x80071ac3”文件无法写入移动硬盘
  7. 安卓手机和苹果手机如何设置HTTP代理IP上网
  8. 企业IT管理岗的首选认证:ITIL®4 Foundation
  9. Spring Cloud 异常“ Caused by: java.net.UnknownHostException: discovery.host ”
  10. DARTS 可微 架构搜索