1 条题解
-
0
思路
原串异或下标奇偶后,反对称偶数子串变成普通偶回文,半径和可超过32位。
参考程序(C++11)
#include <bits/stdc++.h> using namespace std; int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int n;string s;cin>>n>>s;for(int i=0;i<n;i++)s[i]=char('0'+((s[i]-'0')^(i&1)));vector<int>d(n);int l=0,r=-1;long long ans=0;for(int i=0;i<n;i++){int k=i>r?0:min(d[l+r-i+1],r-i+1);while(i-k-1>=0&&i+k<n&&s[i-k-1]==s[i+k])k++;d[i]=k;ans+=k;if(i+k-1>r){l=i-k;r=i+k-1;}}cout<<ans<<'\n';}
- 1