[bzoj2084][POI2010]ANT-Antisymmetry(二分+hash)
来源:互联网 发布:uniprot数据库怎么使用 编辑:程序博客网 时间:2024/05/20 02:27
题目:
我是超链接
题解:
这种二分题目主要考虑单调性,
我们可以枚举对称的中心,然后二分长度加到一起,如果小的都不能对称,那更大的肯定不能对称
代码:
#include <cstdio>#include <iostream>#include <cstring>#define ull unsigned long longusing namespace std;const int N=5e5;const int p=1300000001ull;char st[N+5];ull H1[N+5],H2[N+5],mi[N+5];bool check(int l,int r,int mid){ ull x=H1[r]-H1[l-1]*mi[r-l+1]; ull y=H2[l]-H2[r+1]*mi[r-l+1]; if (x==y) return 1;else return 0;}int main(){ int n,i,ans=0; scanf("%d",&n);scanf("%s",st+1); mi[0]=1; for (i=1;i<=n;i++) mi[i]=mi[i-1]*p; for (i=1;i<=n;i++) H1[i]=H1[i-1]*p+st[i]-'0'; for (i=n;i>=1;i--) H2[i]=H2[i+1]*p+(!(st[i]-'0')); for (i=1;i<=n;i++) { int l=1,r=min(i,n-i),cnt=0; while (l<=r) { int mid=(l+r)>>1; if (check(i-mid+1,i+mid,mid)) cnt=mid,l=mid+1; else r=mid-1; } ans+=cnt; } printf("%d",ans);}
阅读全文
1 0
- [bzoj2084][POI2010]ANT-Antisymmetry(二分+hash)
- [BZOJ2084][Poi2010]Antisymmetry(hash+二分||manacher)
- [BZOJ2084]Antisymmetry(二分+hash)
- bzoj 2084: [Poi2010]Antisymmetry (hash+二分)
- 【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
- 2084: [Poi2010]Antisymmetry hash+二分
- Bzoj2084:[Poi2010]Antisymmetry:manachar算法
- ionic实现轮播
- krpano调用js方法并传参、在krpano中用JS实现视频音频播放
- python实战之线性回归、局部加权回归
- Mysqldump 相关参数详解
- curl命令
- [bzoj2084][POI2010]ANT-Antisymmetry(二分+hash)
- 解决系统输入法出现Next 而不是Done的做法
- http访问解析流程原理
- mybatis传递多个参数
- 欢迎使用CSDN-markdown编辑器
- Xcode项目报错系列记录整理——000001导入svn项目出错
- Apache ActiveMQ Overview
- c_/c++小函数笔记_持续更新
- JavaScript如何一次性展示几万条数据