首页 > 其他 > 详细

[bzoj2084] [Poi2010]Antisymmetry

时间:2016-06-18 16:47:43      阅读:134      评论:0      收藏:0      [点我收藏+]

  哈希或者manacher·改。。我写manacher

  manacher在拓展的时候改一下判断条件就好了。

技术分享
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<algorithm>
 5 #define ll long long
 6 using namespace std;
 7 const int maxn=5e5+23;
 8 char s1[maxn];
 9 int s[maxn<<1],p[maxn<<1];
10 ll ans;
11 int i,j,k,n,m;
12  
13 int ra;char rx;
14 inline int read(){
15     rx=getchar(),ra=0;
16     while(rx<0||rx>9)rx=getchar();
17     while(rx>=0&&rx<=9)ra*=10,ra+=rx-48,rx=getchar();return ra;
18 }
19 int main(){
20     n=read();
21     scanf("%s",s1+1);
22     for(s[0]=%,s[1]=#,i=1;i<=n;i++)s[i<<1]=s1[i]-0,s[i<<1|1]=#;
23     n=n<<1|1;s[n+1]=^;
24     int mx=0,id=0;
25     for(i=1;i<=n;i++){
26         if(mx>i)p[i]=min(mx-i,p[id-(i-id)]);
27         while(s[i-p[i]]+s[i+p[i]]==1||s[i-p[i]]+s[i+p[i]]==#+#)p[i]++;
28         if(i+p[i]>mx)mx=i+p[i],id=i;
29         ans+=p[i]>>1;
30     }
31     printf("%lld\n",ans);
32 }
33 
View Code

 

[bzoj2084] [Poi2010]Antisymmetry

原文:http://www.cnblogs.com/czllgzmzl/p/5596402.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!