1 条题解
-
0
#include<bits/stdc++.h> using namespace std; typedef long long ll; int p[30000100]; int main(){ ios::sync_with_stdio(0); cin.tie(0); string ns; cin>>ns; string s=" "; for(int i=0;i<ns.size();i++){ s+=ns[i]; if(i<ns.size()-1)s+='|'; } int n=s.size()-1; int mid=0,r=0,ans=0; for(int i=1;i<=n;i++){ if(i<=r)p[i]=min(p[mid*2-i],r-i+1); while(s[i-p[i]]==s[i+p[i]])p[i]++; if(i+p[i]-1>=r){ mid=i;r=i+p[i]-1; } cout<<((p[i]-(i&1))/2*2+(i&1))<<" "; } return 0; }
- 1
信息
- ID
- 3272
- 时间
- 100ms
- 内存
- 1024MiB
- 难度
- 10
- 标签
- 递交数
- 5
- 已通过
- 5
- 上传者