【回文串】HDU 3294 Girls' research manacher算法
来源:互联网 发布:而又何羡乎特殊句式 编辑:程序博客网 时间:2024/05/17 23:49
点击打开链接
O(n) 复杂度
#include <cstdio>#include <cstring>#include <cstdlib>#include <string>#include <iostream>#include <algorithm>#include <sstream>#include <cmath>using namespace std;#include <queue>#include <stack>#include <vector>#include <deque>#include <set>#include <map>#define cler(arr, val) memset(arr, val, sizeof(arr))#define FOR(i,a,b) for(int i=a;i<=b;i++)#define IN freopen ("in.txt" , "r" , stdin);#define OUT freopen ("out.txt" , "w" , stdout);typedef long long LL;const int MAXN = 510011;const int MAXM = 6000010;const int INF = 0x3f3f3f3f;const LL mod = 2147483647;const double eps= 1e-8;const double pi=acos(-1.0);#define lson l,m, rt<<1#define rson m+1,r,rt<<1|1char s[201000];char c[410200],in;int p[410002];int len;void solve(){ c[0]='@'; for(int i=0;i<len;i++) c[i*2+1]='#',c[i*2+2]=s[i]=(s[i]-in+26)%26+'a'; len=2*len+2; c[len-1]='#'; c[len]=0; int mx=0,id=0; for(int i=1;i<len;i++) { if(mx>i) p[i]=min(p[2*id-i],p[id]+id-i); else p[i]=1; while(c[i+p[i]]==c[i-p[i]]) p[i]++; if(i+p[i]>mx) mx=i+p[i],id=i; } int ans=0; for(int i=1;i<len;i++) if(p[ans]<p[i]) ans=i; int len=p[ans]-1; if(len==1) puts("No solution!"); else { int l=(ans+1)/2-1-len/2; printf("%d %d\n",l,l+len-1); for(int i=l;i<l+len;i++) printf("%c",s[i]); puts(""); }}int main(){ while(scanf("%c %s",&in,s)!=EOF) { getchar(); len=strlen(s); solve(); } return 0;}
0 0
- 【回文串】HDU 3294 Girls' research manacher算法
- hdu 3294 Girls' research Manacher回文串
- HDU 3294 Girls' research(Manacher算法求回文串左右端点)
- HDU 3294 Girls' research 字符串-manacher算法
- hdu3294 Girls' research (manacher算法,最大回文子串)
- [manacher] hdu 3294 Girls' research
- hdu 3294 Girls' research(manacher)
- HDU - 3294 Girls' research(manacher)
- hdu 3294 Girls' research【manacher】
- HDU 3294 Girls’ research Manacher
- HDU 3294Girls' research最长回文子串(暴力和manacher 两种解法)
- hdoj 3294 Girls' research 【Manacher算法】【输出最长回文子串 + 字符转化】
- HDU 3294 Girls' research (Manacher算法 + 记录区间)
- HDU 3294 Girls' research (Manacher算法 + 记录区间)
- HDU 3294 Girls' research (manacher)
- HDU.3294 Girls' research Manacher Algorithm
- Girls' research(已完善的Manacher算法模板:输出最长回文子串)
- HDU 3294 Girls' research 【最长回文串+字符周期变换】
- 黑马程序员_java IO流
- LeetCode Edit Distance DP
- mysql存储过程详解
- GNU make 总结 (二)
- 【Scala】使用Option、Either和Try处理数据交互
- 【回文串】HDU 3294 Girls' research manacher算法
- UILabel设定行间距方法
- 栈的操作(创建,入栈,出栈,清空,遍历等等)
- 217Contains Duplicate
- 关于矩形排样问题(二)
- 用堆排序的思想求最小的k个数,处理海量数据
- Freemarker操作字符串
- 常见错误描述: Undefined symbols for architecture i386
- Transform