【BZOJ2565】最长双回文串 Manacher
题解:
首先我们写一个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;
}
【BZOJ2565】最长双回文串 Manacher相关推荐
- bzoj 2565: 最长双回文串 manacher算法
2565: 最长双回文串 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem. ...
- [国家集训队]最长双回文串 manacher
---题面--- 题解: 首先有一个直观的想法,如果我们可以求出对于位置i的最长后缀回文串和最长前缀回文串,那么我们枚举分界点然后合并前缀和后缀不就可以得到答案了么? 所以我们的目标就是求出这两个数列 ...
- BZOJ 2565 最长双回文串 Manacher
题目大意: 定义双回文串G是指一个可以被拆分成两个部分(S和T)的字符串G = S + T, 且S和T都是回文串的串, G自己本身可以不是回文串 给出一个长度为n ( 2 <= n <= ...
- 洛谷P4555 [国家集训队]最长双回文串(manacher 线段树)
题意 题目链接 Sol 我的做法比较naive..首先manacher预处理出以每个位置为中心的回文串的长度.然后枚举一个中间位置,现在要考虑的就是能覆盖到i - 1的回文串中 中心最靠左的,和能覆盖 ...
- BZOJ2565 最长双回文子串 回文自动机,回文树
bzoj2565: 最长双回文串 题意 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为"abc",逆序为"cba" ...
- 【BZOJ2565】最长双回文串(回文树)
[BZOJ2565]最长双回文串(回文树) 题面 BZOJ 题解 枚举断点\(i\) 显然的,我们要求的就是以\(i\)结尾的最长回文后缀的长度 再加上以\(i+1\)开头的最长回文前缀的长度 至于最 ...
- BZOJ 2565: 最长双回文串
2565: 最长双回文串 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1769 Solved: 895 [Submit][Status][Dis ...
- 青橙 A1280. 最长双回文串
A1280. 最长双回文串 时间限制:2.0s 内存限制:512.0MB 总提交次数: AC次数: 平均分: 将本题分享到: 查看未格式化的试题 提交 试题讨论 试题来源 中国 ...
- HYSBZ 2565 最长双回文串 (回文树)
2565: 最长双回文串 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1377 Solved: 714 [Submit][Status][Dis ...
最新文章
- c语言logout_C++ 格式化日志输出实现代码
- H3C 7506E基于时间的分时段上网的ACL
- php链接mysql验证用户登录,PHP连接mysql验证用户名是否存在
- 计算4位数每位数相加之和(Python)
- Asp.net Ajax AutoComplete 控件的用法
- TT和LG编程设计模式之代理
- 『操作系统』微内核结构的操作系统几何?(优缺点)
- 黄仕沛经方医案医话精选(上) 王晓军 整理
- qt实现窗口拖动的两种思路
- 初识数据流 bit byte char三者的区别 java
- SpringBoot项目解决 log4j2 核弹漏洞
- ISO /TS 22163:2017轨道交通行业质量管理体系简介及相关标准资料
- 计算机切换用户界面,win7系统登录界面切换用户的方法
- numpy_absolute函数
- 老徐WEB:js入门学习 - 认识javascript
- uni-app触发点击事件
- 【阅读笔记】《深度学习》第一章:引言
- 程序员该如何有效的找工作?
- Ad hoc Test
- 企业内部文档共享平台-MM-WiKi
热门文章
- android微信登录用户绑定,微信授权登陆接入第三方App(步骤总结)Android
- RT-Thread 传感器软件包归类
- 苹果电话录到android,iphone通讯录导出到安卓手机教程
- 山东平度纵火案告破:村主任与地产商联手施暴
- 微信公众号配置网页授权域名报错:无法访问xxx指向的web服务器或虚拟主机的目录
- 解决“错误0x80071ac3”文件无法写入移动硬盘
- 安卓手机和苹果手机如何设置HTTP代理IP上网
- 企业IT管理岗的首选认证:ITIL®4 Foundation
- Spring Cloud 异常“ Caused by: java.net.UnknownHostException: discovery.host ”
- DARTS 可微 架构搜索