bzoj 2124 神奇的树状数组+hash
来源:互联网 发布:《算法统宗》3个和尚 编辑:程序博客网 时间:2024/06/06 02:26
**调了一下午这道题,bzoj还必须要人把读入读完。
这道题关键是用树状数组来实现求类似等比数列的东东。
还有就是要想到转换成字符串比较是否是回文。
详细就懒得说了0 0,直接上代码。
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#define N 10010using namespace std;int t,n,x,power[N];int const mod=1000000007;struct abcd{ int c[N]; void clear(){memset(c,0,sizeof(c));} void add(int pos){ for(int i=pos;i<=n;i+=(i&-i))//这个树状数组实际上是序号越大越小 c[i]=(c[i] + power[i-pos])%mod; } int q(int pos){ int rt=0; for(int i=pos;i;i-=(i&-i)) rt=((long long)c[i]*power[pos-i] + rt)%mod; return rt; } int query(int l,int r){ int xx=q(r),yy=q(l-1); return ( xx-(long long)yy*power[r-l+1]%mod+mod )%mod; }};abcd a1,a2;int main(){ scanf("%d",&t); power[0]=1; for(int i=1;i<N;i++)power[i]=(power[i-1]*2)%mod; while(t--){ a1.clear();a2.clear(); scanf("%d",&n); int i,flag=0; for(i=1;i<=n;i++){ scanf("%d",&x); int len=min(x-1,n-x); if(len&&a1.query(x-len,x-1)!=a2.query(n-x-len+1,n-x))flag=1; a1.add(x); a2.add(n-x+1); } if(flag==1)printf("Y\n"); else printf("N\n"); } return 0;}
阅读全文
0 0
- bzoj 2124 神奇的树状数组+hash
- BZOJ 3790 神奇项链 Hash+二分+树状数组
- BZOJ 2124 树状数组+Hash 解题报告
- BZOJ 3790 神奇项链 Manacher 树状数组
- [BZOJ]3790 神奇项链 Manacher+树状数组
- BZOJ 3790 神奇项链 manachar 树状数组
- bzoj 2124: 等差子序列 树状数组&hash
- BZOJ 2124 等差子序列 (树状数组 hash)
- [BZOJ]2124 等差子序列 Hash&树状数组
- BZOJ 2124: 等差子序列 [树状数组][hash]
- bzoj 3790: 神奇项链 manachar+dp+树状数组
- 树状数组(来自DK的神奇模版)
- zufe 神奇的序列计算 (树状数组)
- 【树状数组】一篇神奇的文章~
- 神奇的矩阵 二维树状数组
- [BZOJ 2124] 等差子序列 Hash+树状数组(附粗略证明)
- hdu3333(hash+树状数组)
- BZOJ 3790 神奇项链 Hash+二分
- 训练总结8.5
- MySQL开发遇到常见问题 连接数据库错误、无法插入值 中文乱码 ??
- Mysql高可用架构之MHA
- 素数判断
- plsql匿名块
- bzoj 2124 神奇的树状数组+hash
- C语言笔试练习(二)
- karma
- hdu6070 二分+线段树 2017多校第四场1004
- getResources().getColor() deprecated
- 中介者模式 | Mediator Pattern
- Python之文件类型
- 【凸包 Graham法 点集排序】poj 1113 Wall
- Web入门(二)