BZOJ 2084: [Poi2010]Antisymmetry
2017-09-05 20:40
393 查看
妙啊 让 0=1 0!=0 1!=1 跑一下Manacher(马拉车)
细节什么的注意一下就好了
细节什么的注意一下就好了
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int N=5e5+5; char s[N<<1]; int r[N<<1]; inline bool ok(char c1,char c2){ if(c1=='#' && c2=='#')return 1; if(min(c1,c2)=='0' && max(c1,c2)=='1')return 1; return 0; } int main(){ int n,id,mx=0,i,l=0; scanf("%d",&n); s[l]='^'; for(i=1;i<=n;++i){ s[++l]='#'; s[++l]=getchar(); while(s[l]<'0'||s[l]>'1')s[l]=getchar(); } s[++l]='#',s[l+1]='*'; for(i=1;i<=l;++i){ if(mx>i)r[i]=min(r[2*id-i],mx-i); while(ok(s[i-r[i]],s[i+r[i]])) ++r[i]; if(i+r[i]>mx) mx=i+r[i],id=i; } LL ans=0; for(i=1;i<=l;++i)if(s[i]=='#')ans+=r[i]>>1; printf("%lld\n",ans); return 0; }
相关文章推荐
- BZOJ 2084 [Poi2010]Antisymmetry Manacher
- BZOJ 2084 Poi2010 Antisymmetry Manacher
- BZOJ 2084: [Poi2010]Antisymmetry 题解
- [bzoj2084] [Poi2010]Antisymmetry
- bzoj 2084: [Poi2010]Antisymmetry (hash+二分)
- 【BZOJ2084】[Poi2010]Antisymmetry【Manacher】
- bzoj2084【POI2010】Antisymmetry
- BZOJ 2084: [Poi2010]Antisymmetry [Manacher]
- BZOJ2084: [Poi2010]Antisymmetry
- BZOJ 2084 [Poi2010]Antisymmetry
- bzoj2084【POI2010】Antisymmetry manacher
- BZOJ2084 POI2010 Antisymmetry
- BZOJ 2084 [Poi2010]Antisymmetry Manacher
- bzoj 2084: [Poi2010]Antisymmetry -- manacher
- 【bzoj2084】【poi2010】【Antisymmetry】【manacher】
- 【BZOJ 2084 [Poi2010]Antisymmetry 回文树
- [BZOJ2084] [Poi2010]Antisymmetry
- BZOJ2084: [Poi2010]Antisymmetry
- BZOJ2084: [Poi2010]Antisymmetry
- [BZOJ2084][Poi2010]Antisymmetry 二分+hash