1 条题解

  • 0
    @ 2026-10-25 20:44:20

    思路

    原串异或下标奇偶后,反对称偶数子串变成普通偶回文,半径和可超过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

    信息

    ID
    1513
    时间
    1000ms
    内存
    64MiB
    难度
    普及+
    标签
    递交数
    1
    已通过
    1
    上传者