HDU 3068 Manacher 模版题
来源:互联网 发布:用淘宝联盟被发现了 编辑:程序博客网 时间:2024/06/06 03:07
点击打开链接
题意:求最长回文子串
思路:Manacher 算法水过,推荐这位大牛的证明证明
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;const int inf=0x3f3f3f3f;const int maxn=110010;char str[maxn],tmp[maxn<<1];int len1[maxn<<1];int init(char *st){ int len=strlen(st); tmp[0]='@'; for(int i=1;i<=2*len;i+=2){ tmp[i]='#'; tmp[i+1]=st[i/2]; } tmp[2*len+1]='#'; tmp[2*len+2]='$'; tmp[2*len+3]=0; return 2*len+1;}int Manacher(char *st,int len){ int p=0,ans=0,po=0; for(int i=1;i<=len;i++){ if(p>i) len1[i]=min(p-i,len1[2*po-i]); else len1[i]=1; while(st[i-len1[i]]==st[i+len1[i]]) len1[i]++; if(len1[i]+i>p){ p=len1[i]+i; po=i; } ans=max(ans,len1[i]); } return ans-1;}int main(){ while(scanf("%s",str)!=-1){ init(str); int len=init(str); int ans=Manacher(tmp,len); printf("%d\n",ans); } return 0;}
0 0
- HDU 3068 Manacher 模版题
- HDU 3294 Manacher模版题
- hdu 3294 Manacher模版题
- hdu 3068 最长回文 (Manacher模版)
- HDU 3068 最长回文 【manacher模版】
- HDU 3068 Manacher 模板题
- POJ 3974 Manacher模版题
- Manacher-模版题poj3974 hdu3068
- Manacher模版
- Manacher模版
- 【HDU 3068】【manacher模板题】最长回文
- hdu 3068 Manacher
- hdu 3068 4513 manacher
- hdu 3068 manacher算法
- HDU 3068(最长回文-manacher)[Template:manacher]
- hdu3068 manacher模版
- HDU 3068 回文串--Manacher
- hdu 3068 最长回文 manacher
- warning: LF will be replaced by CRLF
- 从根本解决“Call to undefined function Think\imagecreate()”
- 第五周项目2:游戏中的角色类(1)
- wordpress如何插入自定义的微博秀
- C语言第十篇:循环语句练习
- HDU 3068 Manacher 模版题
- CodeForces 645D Robot Rapping Results Report(二分+拓扑排序)
- 按钮
- 求屏幕分辨率px
- Android获得线性渐变某点的颜色
- 分析system_call中断处理过程
- redis Java使用例子
- 时钟
- 冒泡排序