最长回文

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 7317    Accepted Submission(s): 2500

Problem Description
给出一个仅仅由小写英文字符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
aaaa abab
Sample Output
4 3
Source
2009 Multi-University Training Contest 16 - Host by NIT
Recommend
lcy   |   We have carefully selected several similar problems for you:  1358 1686 3336 3065 3746 
题目:
中文见上。
思路:
manacher裸题。

主要是练习下。

manacher算法解说见here

思路主要是先给字符串加上隔离符。把回文串长度奇偶同一为求奇数回文长度。求出以每一个字符为中心字符的最大回文长度。后面的结果利用前面的结果。

p[i]-1为原回文串的长度。

具体见代码:
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
const int INF=0x3f3f3f3f;
const int maxn=111000;
int p[maxn<<1],len;
char buf[maxn],st[maxn<<1];
void init()
{int i;len=strlen(buf);st[0]='$',st[1]='#';for(i=0;i<len;i++)st[2*i+2]=buf[i],st[2*i+3]='#';len=2*len+2;
}
void manacher()
{int i,id,mx=0;for(i=1;i<len;i++){p[i]=mx>i?

min(mx-i,p[2*id-i]):1; while(st[i+p[i]]==st[i-p[i]])//不用操心越界。由于st[0]='$' p[i]++; if(i+p[i]>mx) mx=i+p[i],id=i; } } int main() { int i,ans; while(~scanf("%s",buf)) { ans=1; init(); manacher(); for(i=2;i<len;i++) ans=max(ans,p[i]); printf("%d\n",ans-1); } return 0; }

hdu 3068 最长回文(manacheramp;最长回文子串)相关推荐

  1. HDU - 3068 最长回文(manacher)

    HDU - 3068 最长回文 Time Limit: 2000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Subm ...

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

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

  3. HDU 3068 最长回文 manacher算法

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

  4. 最长回文子串 hihocode 1032 hdu 3068

    最长回文 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

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

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

  6. hdu 3068 最长回文【manacher】(模板题)

    <题目链接> 最长回文 Problem Description 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如a ...

  7. 最长回文 HDU - 3068(求最长回文串的长度【马拉车算法Manacher】)

    马拉车算法 Manacher's Algorithm 是用来查找一个字符串的最长回文子串的线性方法,由一个叫 Manacher 的人在 1975 年发明的,这个方法的最大贡献是在于将时间复杂度提升到了 ...

  8. 【HDU - 3068】最长回文(Manacher算法,马拉车算法求最长回文子串)

    题干: 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.  回文就是正反读都是一样的字符串,如aba, abba等 Input 输入有多组case,不超过120组 ...

  9. 最长回文 HDU - 3068 马拉车算法

    问题: 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.  回文就是正反读都是一样的字符串,如aba, abba等 Input 输入有多组case,不超过120组 ...

最新文章

  1. Metal之MTLBuffer批量加载顶点数量较多的图形渲染
  2. stm32 isp下载官方软件android_OpenCanvas免费版下载_OpenCanvas绘图软件官方版下载7.0.25...
  3. Tableau BI工具对接 AnalyticDB for PostgreSQL数据源
  4. 《偶像爱豆出身的编程语言排行第一得主!谁还敢嘲python没实力?》Python应用与实践
  5. 数据结构-环形队列 C和C++的实现
  6. 2.5 分类模型评估指标—AUC与ROC及绘制混淆矩阵与ROC曲线
  7. 直播实录丨十年主导15个产品从0到1,她的经验与思考现场拆解
  8. 会计专业与计算机专业结合复合型,对会计专业学生学习计算机的建议
  9. 嗖嗖嗖Wordpress外贸企业主题制作教程--第二讲 整站下载器的使用和静态页面的准备
  10. jquery获取所有选中的checkbook
  11. python调用foxmail 发邮件_foxmail 收取已发送邮件
  12. js worker使用总结
  13. springboot项目日志记录访问客户端ip地址
  14. 现在怎么不生产5寸大小的手机了?
  15. 6年主导3个项目,我终于成了别人眼中的大神
  16. Js获取中国农历,用于确定非固定的农历节假日
  17. Eclipse中同时打开多个控制台(Console)
  18. java制作海报工具类,java操作图片贴图,java给图片添加文字,调整字体颜色大小间距
  19. linux中的sh脚本语法
  20. 【Spark】广播变量和累加器

热门文章

  1. 计算机密码行业专题研究:网络安全最大弹性领域
  2. 深度学习综述:Hinton、Yann LeCun和Bengio经典重读
  3. 展望:模型驱动的深度学习
  4. 童心制物(Makeblock)受邀参加2020年韩国机器人世界展览会,倡导以先进的STEAM教育培养未来复合型人才
  5. 以太坊创始人V 神:普通人看见现在,天才看见未来
  6. 云原生应用程序的架构应该怎么设计?
  7. 「每天一道面试题」下面的代码有问题吗?为什么?
  8. 绿色数据中心如何提高效率?
  9. springboot jpa 复合主键 联合主键
  10. 全面理解Javascript闭包和闭包的几种写法及用途【转】