题意:
求最长子串使得它有四个相同的回文串SSSS相连组成
枚举中间x
找右边的中间y满足 y-r[y]<=x y<=x+r[x]/2
用个set维护
注意中间只能是#
#include#include #include #include using namespace std;const int N=1e6+5;typedef long long ll;int n;char s[N],str[N];int r[N];void Manacher(char s[],int n){ int p=0,a; for(int i=1;i<=n;i++){ r[i]=i p) p=i+r[i]-1,a=i; }}void iniStr(char str[],char s[]){ for(int i=1;i<=n;i++) s[(i<<1)-1]='#',s[i<<1]=str[i]; s[n<<1|1]='#'; s[0]='@';s[(n<<1)+2]='$';}set Set;set ::iterator it;struct data{ int v,id; bool operator <(const data a)const{ return v