【回文串】HDU 3294 Girls' research manacher算法

点击打开链接

O(n) 复杂度

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
#include 
#include 
#include 
#include 
#include 
#include 
#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|1
char s[201000];
char c[410200],in;
int p[410002];
int len;
void solve()
{
    c[0]='@';
    for(int i=0;ii)
            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


你可能感兴趣的:(字符串)