Manacher算法
Posted st-lovaer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Manacher算法相关的知识,希望对你有一定的参考价值。
fl说今天是20200202,是个回文串,lzz应该整理一下回文串算法,于是整理一下马拉车。
很简单的回文字符串寻找算法,纯原创板子,返回信息最全,已过HDU上的板题,清除了上一次的残余信息而可多次调用。
1 #include<bits/stdc++.h> 2 #define pf printf 3 #define f(i,a,b) for(int i=a;i<=b;i++) 4 using namespace std; 5 const int maxn=110005; 6 char ma[maxn]; 7 char tem[maxn<<1]; 8 int mp[maxn<<1]; 9 void manacher(char ma[],int mp[],int len,int &maxlen,int &maxstart,int &maxend){ 10 maxlen=-1; 11 tem[0]=‘$‘; 12 tem[1]=‘#‘; 13 int l=2; 14 f(i,1,len){ 15 tem[i<<1]=ma[i-1]; 16 tem[(i<<1)+1]=‘#‘; 17 } 18 int maxright=0,id=0; 19 len=1+(len<<1); 20 tem[len+1]=‘