poj_1974,最长回文字串manacher
来源:互联网 发布:数据分析 前景 编辑:程序博客网 时间:2024/06/04 23:21
时间复杂度为O(n),参考:http://bbs.dlut.edu.cn/bbstcon.php?board=Competition&gid=23474
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define maxn 2001000using namespace std;char s[maxn],st[maxn];int p[maxn];int cases=1;int n;void rebuild(){ st[0]='$'; st[1]='#'; int len=strlen(s); for(int i=0;i<len;i++) {st[2*i+2]=s[i];st[2*i+3]='#';} st[2*len+2]=0;}void solve(){ int len=2*strlen(s)+2; int id,mx=0,ans=1; for(int i=0;i<len;i++) { if(mx>i) p[i]=min(p[2*id-i],mx-i); else p[i]=1; for(;st[p[i]+i]==st[i-p[i]];p[i]++) ; if(p[i]+i>mx) { mx=p[i]+i; id=i; } ans=max(ans,p[i]); } cout<<"Case "<<cases++<<": "<<ans-1<<endl;}int main(){ while(gets(s)) { if(s[0]=='E'&&s[1]=='N'&&s[2]=='D') break; rebuild(); solve(); } return 0;}
0 0
- poj_1974,最长回文字串manacher
- 最长回文字串-manacher算法
- 最长回文字串-Manacher解法
- 最长回文字串(Manacher算法)
- 最长回文字串--Manacher算法
- 最长回文字串--MANACHER算法
- 最长回文字串Manacher 算法
- Manacher算法 求最长回文字串
- Manacher算法求最长回文字串
- 最长回文字串——Manacher算法
- 个人模板 Manacher求最长回文字串
- manacher算法求解最长回文字串
- HDU 3068 最长回文(manacher算法:回文字串)
- POJ 3974 最长回文字串(manacher算法)
- 算法练习 - 最长回文字串(Manacher 算法学习)
- 51nod 1089 最长回文字串V2(Manacher算法)
- 最长回文字串 Manacher算法 时间复杂度O(N)
- Manacher:最长回文
- 百度地图之定位数据
- 兼容 谷歌、火狐、360系列浏览器的桌面通知(实用)
- UIScrollView
- 关于mysql的mysql"Access denied for user'root'@'IP地址'"
- iBATIS入门程序六大步详解
- poj_1974,最长回文字串manacher
- Java编程思想(五) —— 多态(上)
- Android开发,LogCat没有信息输出
- 分享做为独立开发者的一些经验,如何成为独立开发者?
- c-多线程同步的问题
- c-多线程使用的注意事项
- Python之道(二)之字符串
- 多线程1
- TimerTask 定时器