<题目链接>

最长回文

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
#include <bits/stdc++.h>
using namespace std;const int N = 2e5+5;
int len[N];
char str[N],s[N];void init(){    //得到处理后的新字符串str[0]='@';int i;for(i=0;s[i]!=0;i++){str[2*i+1]='#';str[2*i+2]=s[i];}str[2*i+1]='#';str[2*i+2]=0;
}
int manacher(){int id=0,mx=0;      //id为能当前能够到达字符串最右端的回文串的中心位置for(int i=1;str[i];i++){len[i]=mx>i?min(len[2*id-i],mx-i):1;    //  2*id-i,指的是i关于id 对称得到的坐标,因为前面已经算过了mx前的每个点的回文串,所以,如果这个i点在mx范围内,就将len[i]初始化为前面算过的数值while(str[i+len[i]]==str[i-len[i]])len[i]++;if(i+len[i]>mx)   //mx为前i个回文子串的右端点所能到达的最大距离,即前面已经算过的最大回文区域mx=i+len[i],id=i;}int ans=0;for(int i=1;str[i];i++)ans=max(ans,len[i]);return ans-1;    //回文串长度为len[i]-1,这个可以自己画图理解,因为s[]数组是在原串的基础上插入了 '#'
}
int main(){while(~scanf("%s",s)){init();printf("%d\n",manacher());}
}

  

转载于:https://www.cnblogs.com/00isok/p/9419714.html

hdu 3068 最长回文【manacher】(模板题)相关推荐

  1. HDU 3068 最长回文 manacher算法

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

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

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

  3. HDU 3068 最长回文

    最长回文串模板题 Manacher 算法 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> ...

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

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

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

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

  6. hdu 3068 最长回文(manacheramp;最长回文子串)

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

  7. HDU 3068 最长回文

    Manacher算法练笔,O(n)求最长回文子串. 参考资料:http://blog.csdn.net/ggggiqnypgjg/article/details/6645824 http://www. ...

  8. 最长回文(Manacher算法模板)

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

  9. 杭电3068 最长回文 最长回文的manacher算法

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

最新文章

  1. R语言plotly可视化:使用PCA算法进行数据降维、使用plotly可视化随着主成分的增加解释的方差的量(plotting explained variance)
  2. python中如何判断输入的是英文字母_python如何判断一个字符是否为汉字,英文字母,数字,空还是其他...
  3. The total number of locks exceeds the lock table s
  4. Nginx实用指南V1 (连载之四:流行CMS博客rewrite写法)
  5. linux下oracle数据库服务和监听的启动停止
  6. 【Vue】 Error with Vue lazy loading components: “Failed to resolve async component“
  7. 原生Java代码拷贝目录
  8. BugKuCTF 杂项 多种方法解决
  9. 06-CABasicAnimation基础核心动画
  10. 混合牛奶(洛谷-P1208)
  11. nodejs的mysql初始化
  12. Silverlight 2.5D RPG游戏技巧与特效处理:(十八)开场卷轴与动态窗口
  13. 趣学 C 语言(七)—— 文件读写操作
  14. C# TabControl增加关闭按钮
  15. Mac合并pdf文件最简单的方法——PDF Expert合并pdf文件教程
  16. 《流言终结者》,再见
  17. Java完全自学手册,从外包到大厂,再到年薪100万都靠它
  18. 爬虫访问中,如何解决网站限制IP的问题?
  19. regsvr32 命令小集注册OCX控件,注册控件
  20. 手机浏览器上网谁最快?手机浏览器速度测评

热门文章

  1. vue-cli 中使用 less 插件
  2. ansible笔记(5):常用模块之文件操作(二)
  3. 紫书 习题 10-20 UVa 1648 (推公式)
  4. Mongoose快速入门
  5. 解决webview调用 goBack() 返回上一页自动刷新闪白的情况
  6. 转---谈谈HTTP协议中的短轮询、长轮询、长连接和短连接
  7. Redis实现关注关系
  8. Spring Boot快速搭建Spring框架
  9. ZeroMQ接口函数之 :zmq - 0MQ 轻量级消息传输内核
  10. Qt控件注册事件过滤器后不显示