代码先行
#include <bits/stdc++.h>
using namespace std;
const int maxx = (1 << 21);
string s;
int pos[maxx][26],pre[maxx][26],cpos[maxx],cpre[maxx];
int cnt[maxx];//辅助统计当前奇数个数为i的个数
int temp,postodd,temp2,postodd2;
int z[maxx];
int T,len;
int l,r;
int i,k;
int n1,n2;
long long ans;
void exkmp()
{
l = r = 0;
z[0] = 0;
for (i = 1; i < len; i++)
{
if(r >= i && z[i - l] < r - i + 1)
{
z[i] = z[i - l];
}
else{
z[i] = max(0,r - i + 1);
while( i + z[i] < len && s[ z[i] ] == s[ i + z[i] ] ) z[i]++;
}
if(i + z[i] > l + z[l]) l = i,r = i + z[i] - 1;
//cout << z[i] << " ";
}
z[0] = len;
}
vo