【HDU - 3068】最长回文(Manacher算法,马拉车算法求最长回文子串)
题干:
给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.
回文就是正反读都是一样的字符串,如aba, abba等
Input
输入有多组case,不超过120组,每组输入为一行小写英文字符a,b,c...y,z组成的字符串S
两组case之间由空行隔开(该空行不用处理)
字符串长度len <= 110000
Output
每一行一个整数x,对应一组case,表示该组case的字符串中所包含的最长回文长度.
Sample Input
aaaaabab
Sample Output
4
3
解题报告:
裸的马拉车算法,一定注意修改后的数组需要开二倍就好了,,,不然会RE但是我也不知道为什么HDUoj报TLE很迷。。但是这题好像可以暴力啊。。跑出来都是200多ms。。
AC代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
#define fi first
#define se second
using namespace std;
const int MAX = 2e5 + 5;
int top;
char s[110005],str[110005<<1];
int p[120005<<1];
int manacher() {if(top == 0) return 0 ;int maxx = -1;int c = -1,r = -1;for(int i = 1; i<top; i++) {p[i] = r>i ? min(p[2*c-i],r-i) : 1;
// while(i+p[i]<top && i-p[i] > -1) {
// if(str[i+p[i]] == str[i-p[i]]) p[i]++;
// else break;
// }for(;str[i-p[i]] == str[i+p[i]];p[i]++);if(i+p[i] > r) {r = i+p[i];c=i;}maxx = max(maxx,p[i]);}return maxx-1;
}
int main()
{while(~scanf("%s",s)) {int len = strlen(s);top=0;str[top++] = '@';for(int i = 0; i<len; i++) {str[top++] = '#';str[top++] = s[i];}str[top++] = '#';str[top] = '\0';
// printf("%s\n",str);printf("%d\n",manacher());} return 0 ;}
【HDU - 3068】最长回文(Manacher算法,马拉车算法求最长回文子串)相关推荐
- Manacher Algorithm马拉车算法详解
Manacher Algorithm马拉车算法详解 链接:https://www.zhihu.com/question/37289584/answer/465656849 中心扩展算法 我们先来看一个 ...
- 1616: 最长回文串(马拉车算法)
1616: 最长回文串 Time Limit: 1 Sec Memory Limit: 128 MB [Submit][Status][Web Board] Description 求一个字符串的最长 ...
- 最长回文字符串(马拉车算法)
Manacher算法 算法总结第三弹 manacher算法,前面讲了两个字符串相算法--kmp和拓展kmp,这次来还是来总结一个字符串算法,manacher算法,我习惯叫他 "马拉车& ...
- Manachar算法(马拉车算法):快速求取最长回文子串
当我们求取最长回文子串时,常见的方法就是中心扩散法,即从字符中心出发,向两边对比,检查是否相等,若等于,则继续检查,并使当前字符中心对应的最长回文子串长度加一,否则,结束该字符中心的回文检查,比较与当 ...
- leetcode-回文字符串(马拉车算法模板)
马拉车算法 由于看了一个巨巨的博客深受启发.所以不再赘述. 巨巨的博客 leetcode-最长回文字符串: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示 ...
- 【 HDU - 2594 】Simpsons’ Hidden Talents(KMP应用,求最长前缀后缀公共子串)
题干: Homer: Marge, I just figured out a way to discover some of the talents we weren't aware we had. ...
- 【回文串1 动态规划 马拉车算法】LeetCode 5. Longest Palindromic Substring
LeetCode 5. Longest Palindromic Substring LeetCode中与回文串相关的免费的题目共有15道(5, 9, 125, 131, 132, 214, 234, ...
- hdu 3068 最长回文 (Manacher算法求最长回文串)
参考博客:Manacher算法--O(n)回文子串算法 - xuanflyer - 博客频道 - CSDN.NET 从队友那里听来的一个算法,O(N)求得每个中心延伸的回文长度.这个算法好像比较偏门, ...
- HDU 3068 最长回文 manacher算法
Manacher算法的裸题 下面简单说一下复杂度为O(n)的马拉车算法 首先过程中涉及到的变量有: p[i]表示以t[i]字符为中心的回文子串的半径 id为最大回文子串中心的位置 mx是回文串 ...
- hdu 3068 最长回文(manacher算法)
最长回文 Time Limit: 4000/2000 M ...
最新文章
- 「AI不惑境」数据压榨有多狠,人工智能就有多成功
- JavaScript运算符:递增递减运算符前置和后置的区别
- makefile:4:***缺少分隔符。 停止
- SQL With As 用法Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
- asp获取ftp服务器目录并显示_用 Python 快速实现 HTTP 和 FTP 服务器
- VLine[-1]=VLine[width]=128 数组的负一地址代表啥
- 成功者都在用的“成功咒语”
- 新入职了一个卷王,一来就把性能提升4倍,这谁受的了~
- 1059: [ZJOI2007]矩阵游戏 - BZOJ
- paip.silverlight设计器载入异常NullReferenceException问题。
- outlook登陆邮件接收服务器(POP3)失败问题
- 三十四个超级经典小故事
- oracle的mins,分钟的英文缩写,10min还是10mins!
- 【ZOJ2750】Idiomatic Phrases Game(最短路)
- Macbook pro苹果笔记本电脑安装双系统图文教程
- 移远EC20--1 AT命令初始2
- 中国北斗简单原理随笔
- 英文歌曲:a place nearby(不远的地方)
- itext设置pdf的尺寸_iText图像调整大小
- Java代码审计基础——RMI原理和反序列化利用链
热门文章
- xman的思维导图快捷键_一图胜千言,免费的多人协作思维导图工具,推荐收藏值得拥有哦...
- word导入mysql表格_数据插入Word 表格步骤
- wampserver php乱码,WampServer搭建php环境可能遇到的问题
- 如图所示是一种轧钢计算机控制系统,高速线材厂轧钢工艺培训(活套)
- 审计署计算机培训心得体会,审计署计算机中级培训心得体会2018
- 文献引用的标准格式_外语论文文献引用格式—APA Style
- iphone彻底删除照片如何恢复_手机删除的照片如何恢复?OPPO最新照片恢复
- linux 文件重命名_如何在 Linux 上重命名一组文件 | Linux 中国
- django 学习 (三) 模板变量
- 增加RIL组件时编辑出现的问题