题干:

给出一个只由小写英文字符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算法,马拉车算法求最长回文子串)相关推荐

  1. Manacher Algorithm马拉车算法详解

    Manacher Algorithm马拉车算法详解 链接:https://www.zhihu.com/question/37289584/answer/465656849 中心扩展算法 我们先来看一个 ...

  2. 1616: 最长回文串(马拉车算法)

    1616: 最长回文串 Time Limit: 1 Sec Memory Limit: 128 MB [Submit][Status][Web Board] Description 求一个字符串的最长 ...

  3. 最长回文字符串(马拉车算法)

     Manacher算法 算法总结第三弹 manacher算法,前面讲了两个字符串相算法--kmp和拓展kmp,这次来还是来总结一个字符串算法,manacher算法,我习惯叫他 "马拉车& ...

  4. Manachar算法(马拉车算法):快速求取最长回文子串

    当我们求取最长回文子串时,常见的方法就是中心扩散法,即从字符中心出发,向两边对比,检查是否相等,若等于,则继续检查,并使当前字符中心对应的最长回文子串长度加一,否则,结束该字符中心的回文检查,比较与当 ...

  5. leetcode-回文字符串(马拉车算法模板)

    马拉车算法 由于看了一个巨巨的博客深受启发.所以不再赘述. 巨巨的博客 leetcode-最长回文字符串: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示 ...

  6. 【 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.  ...

  7. 【回文串1 动态规划 马拉车算法】LeetCode 5. Longest Palindromic Substring

    LeetCode 5. Longest Palindromic Substring LeetCode中与回文串相关的免费的题目共有15道(5, 9, 125, 131, 132, 214, 234, ...

  8. hdu 3068 最长回文 (Manacher算法求最长回文串)

    参考博客:Manacher算法--O(n)回文子串算法 - xuanflyer - 博客频道 - CSDN.NET 从队友那里听来的一个算法,O(N)求得每个中心延伸的回文长度.这个算法好像比较偏门, ...

  9. HDU 3068 最长回文 manacher算法

    Manacher算法的裸题 下面简单说一下复杂度为O(n)的马拉车算法  首先过程中涉及到的变量有:  p[i]表示以t[i]字符为中心的回文子串的半径  id为最大回文子串中心的位置  mx是回文串 ...

  10. hdu 3068 最长回文(manacher算法)

    最长回文                                                                         Time Limit: 4000/2000 M ...

最新文章

  1. 「AI不惑境」数据压榨有多狠,人工智能就有多成功
  2. JavaScript运算符:递增递减运算符前置和后置的区别
  3. makefile:4:***缺少分隔符。 停止
  4. SQL With As 用法Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
  5. asp获取ftp服务器目录并显示_用 Python 快速实现 HTTP 和 FTP 服务器
  6. VLine[-1]=VLine[width]=128 数组的负一地址代表啥
  7. 成功者都在用的“成功咒语”
  8. 新入职了一个卷王,一来就把性能提升4倍,这谁受的了~
  9. 1059: [ZJOI2007]矩阵游戏 - BZOJ
  10. paip.silverlight设计器载入异常NullReferenceException问题。
  11. outlook登陆邮件接收服务器(POP3)失败问题
  12. 三十四个超级经典小故事
  13. oracle的mins,分钟的英文缩写,10min还是10mins!
  14. 【ZOJ2750】Idiomatic Phrases Game(最短路)
  15. Macbook pro苹果笔记本电脑安装双系统图文教程
  16. 移远EC20--1 AT命令初始2
  17. 中国北斗简单原理随笔
  18. 英文歌曲:a place nearby(不远的地方)
  19. itext设置pdf的尺寸_iText图像调整大小
  20. Java代码审计基础——RMI原理和反序列化利用链

热门文章

  1. xman的思维导图快捷键_一图胜千言,免费的多人协作思维导图工具,推荐收藏值得拥有哦...
  2. word导入mysql表格_数据插入Word 表格步骤
  3. wampserver php乱码,WampServer搭建php环境可能遇到的问题
  4. 如图所示是一种轧钢计算机控制系统,高速线材厂轧钢工艺培训(活套)
  5. 审计署计算机培训心得体会,审计署计算机中级培训心得体会2018
  6. 文献引用的标准格式_外语论文文献引用格式—APA Style
  7. iphone彻底删除照片如何恢复_手机删除的照片如何恢复?OPPO最新照片恢复
  8. linux 文件重命名_如何在 Linux 上重命名一组文件 | Linux 中国
  9. django 学习 (三) 模板变量
  10. 增加RIL组件时编辑出现的问题