bzoj2084 [Poi2010]Antisymmetry
来源:互联网 发布:诺思星被淘宝大学开除 编辑:程序博客网 时间:2024/05/21 10:55
反对称子串,emmm,其实本质上和回文子串是一样的,只是对应方法不一样罢了。然后就可以直接上 马拉车(manacher)了。
#include<bits/stdc++.h>#define N 1000000using namespace std;char s[N+5],tmp[2*N+5];int p[2*N+5];int n,m;long long ans;inline void manacher(){ m=2*n+1; for (int i=1;i<=n;i++)tmp[i*2]=s[i],tmp[i*2+1]='#'; tmp[0]='+';tmp[1]='#';tmp[m+1]='-'; int mx=0,id=0; for (int i=1;i<=m;i+=2) { if (mx>i) p[i]=min(p[2*id-i],mx-i);else p[i]=1; while (tmp[i+p[i]]-'0'+tmp[i-p[i]]-'0'==1 || (tmp[i+p[i]]==tmp[i-p[i]] && tmp[i+p[i]]=='#')) p[i]++; if (i+p[i]>mx) mx=i+p[i],id=i; }}int main(){ freopen("in.txt","r",stdin); scanf("%d\n",&n); scanf("%s",s+1); manacher(); for (int i=1;i<=m;i+=2) ans+=(p[i]-1)/2; printf("%lld\n",ans); return 0;}
值得说的是,要把字符串处理一下,头尾各加一个不同字符,中间插一样的特殊字符(处理偶数)。
阅读全文
0 0
- 【bzoj2084】 POI2010 Antisymmetry manacher
- 【bzoj2084】【poi2010】【Antisymmetry】【manacher】
- [BZOJ2084] [Poi2010]Antisymmetry
- bzoj2084【POI2010】Antisymmetry
- 【BZOJ2084】[Poi2010]Antisymmetry【Manacher】
- BZOJ2084[Poi2010] Antisymmetry
- BZOJ2084 POI2010 Antisymmetry
- BZOJ2084: [Poi2010]Antisymmetry
- bzoj2084【POI2010】Antisymmetry manacher
- 【bzoj2084】 [Poi2010]Antisymmetry
- 【bzoj2084】[Poi2010]Antisymmetry
- bzoj2084 [Poi2010]Antisymmetry
- Bzoj2084:[Poi2010]Antisymmetry:manachar算法
- BZOJ2084: [Poi2010]Antisymmetry manacher算法
- [BZOJ2084][Poi2010]Antisymmetry(hash+二分||manacher)
- [bzoj2084][POI2010]ANT-Antisymmetry(二分+hash)
- POI2010 Antisymmetry
- [Poi2010]Antisymmetry
- 安装beautifulsoup4趟坑,安装好了还是报错
- 数据库事务和隔离级别
- 51Nod-1029-大数除法-【思维】
- 使用 scala 实现单机版 WordCount
- 46.Oracle杂记——Oracle常用动态视图v$session_event
- bzoj2084 [Poi2010]Antisymmetry
- 每天学习5分钟open stack之keystone篇
- SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架,搭建一个前后端web网站(5)
- spring security oauth2.0配置详解
- JSP和Servlet面试
- AJP13服务利用
- linux中的自动安装虚拟机脚本
- Spark Streaming与Storm的对比分析
- HDU 4403 A very hard Aoshu problem DFS