模版:
#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] = '