manacher算法

manacher算法

博客:

模版:

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
using namespace std;
const int maxn = 2e5 + 10;
char s[maxn], sNew[maxn<<1];
int p[maxn<<1], id, mx=0;
int L, R; //回文串在原串的左右端点位置

int Init()
{
    int len = strlen(s);
    sNew[0] = '$';
    sNew[1] = '#';
    int j = 2;
    for (int i = 0; i < len; i++){
        sNew[j++] = s[i];
        sNew[j++] = '#';
    }
    sNew[j] = '