HDU 3068 最长回文
2016-07-16 15:41
232 查看
Problem Description
给出一个只由小写英文字符a,b,c…y,z组成的字符串S,求S中最长回文串的长度.
回文就是正反读都是一样的字符串,如aba, abba等
【题目分析】
manacher的裸题。找出最大值就可以了。
【代码】405ms
给出一个只由小写英文字符a,b,c…y,z组成的字符串S,求S中最长回文串的长度.
回文就是正反读都是一样的字符串,如aba, abba等
【题目分析】
manacher的裸题。找出最大值就可以了。
【代码】405ms
#include <cstdio> #include <cstring> using namespace std; char s[1010000],ss[2010000]; int r[2010000]; inline int min(int a,int b) {return a>b?b:a;} int main() { while (scanf("%s",s+1)!=EOF) { int l=strlen(s+1); ss[1]='#';ss[0]='@'; for (int i=1;i<=l;++i){ ss[i*2]=s[i]; ss[i*2+1]='#'; } s[l*2+2]='$'; l=l*2+1; int id=0,mx=0,ans=0,maxi=0,maxx=0; for (int i=1;i<=l;++i){ if (mx>i) r[i]=min(r[2*id-i],mx-i); else r[i]=0; while (ss[i-r[i]]==ss[i+r[i]]) r[i]++; if (i+r[i]>mx) mx=i+r[i],id=i; if (r[i]>maxi) maxi=r[i]; } printf("%d\n",(maxi*2-1)/2); } }
相关文章推荐
- PHP入门(8) 面向对象(2) 抽象类
- 一款产品的成败与产品经理有多大的关系?
- EasyDarwin流媒体服务器RTSP拉模式流媒体转发模块设计
- EasyDarwin流媒体服务器RTSP拉模式流媒体转发模块设计
- go语言十大排序算法总结
- 一点一点学C#3
- ORACLE使用DBCA建数据库时错误ORA-01503,ORA-01158解决
- (15)Hibernate查询
- Tire 树 练习
- Lesson 7:简单的文件输入和输出
- “一夜成名”需要多久?他花了20年!
- 深入理解计算机系统chapter6
- 实至名归:Google Chrome成功之路
- Eclipse常用快捷键
- 10015---SpringMVC--自定义视图
- 自己写的React小例子
- 奶牛晒衣服_纪中1744_贪心+堆
- 动态代理
- Hybird和Nation开发的优缺点
- JSP中使用<c:forEach>标签循环遍历元素