等差子序列

Time Limit: 3 Sec  Memory Limit: 259 MB
Submit: 1919  Solved: 713
[Submit][Status][Discuss]

Description

给一个1到N的排列{Ai},询问是否存在1<=p1<p2<p3<p4<p5<…<pLen<=N (Len>=3),
使得Ap1,Ap2,Ap3,…ApLen是一个等差序列。
 

Input

输入的第一行包含一个整数T,表示组数。
下接T组数据,每组第一行一个整数N,每组第二行为一个1到N的排列,数字两两之间用空格隔开。
N<=10000,T<=7
 

Output

对于每组数据,如果存在一个等差子序列,则输出一行“Y”,否则输出一行“N”。
 

Sample Input

2
3
1 3 2
3
3 2 1

Sample Output

N
Y

HINT

 

因此,我们构造一个辅助数组b,其中x如果出现过,那么b[x]=1;否则b[x]=0。因此如果x满足条件,那么必然存在一个数y使得b[x-y]!=b[x+y];然后我们发现如果把b看成一个字符串,那么实际上就是判断以x为中心的极长字符串是否是回文串,如果不是那么显然存在y使得b[x-y]!=b[x+y],那么就可以输出'Y'。快速的字符串比较不妨使用hash,然后因为需要修改那么就用两个树状数组分别维护它所在区间正着和倒着的hash值即可。

 #include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
#define mod 1000000007
#define N 10005
using namespace std; int n,a[N],pw[N];
struct bit_node{
int c[N];
void clr(){ memset(c,,sizeof(c)); }
void add(int x){
int i; for (i=x; i<=n; i+=i&-i) c[i]=(c[i]+pw[i-x])%mod;
}
int getsum(int x){
int i,t=; for (i=x; i; i^=i&-i) t=((ll)c[i]*pw[x-i]+t)%mod;
return t;
}
int qry(int x,int y){
int p=getsum(x-),q=getsum(y);
return (q-(ll)p*pw[y-x+]%mod+mod)%mod;
}
}bit1,bit2;
int main(){
int cas,i; scanf("%d",&cas);
pw[]=; for (i=; i<=; i++) pw[i]=(ll)pw[i-]*%mod;
while (cas--){
scanf("%d",&n); int x;
for (i=; i<=n; i++) scanf("%d",&a[i]);
bit1.clr(); bit2.clr();
for (i=; i<=n; i++){
x=min(a[i]-,n-a[i]);
if (x && bit1.qry(a[i]-x,a[i]-)!=bit2.qry(n-a[i]-x+,n-a[i])) break;
bit1.add(a[i]); bit2.add(n-a[i]+);
}
puts((i>n)?"N":"Y");
}
}

bzoj 2124 等差子序列 树状数组维护hash+回文串的更多相关文章

  1. 【BZOJ2124】等差子序列 树状数组维护hash值

    [BZOJ2124]等差子序列 Description 给一个1到N的排列{Ai},询问是否存在1<=p1<p2<p3<p4<p5<…<pLen<=N ...

  2. CF452F Permutations/Luogu2757 等差子序列 树状数组、Hash

    传送门--Luogu 传送门--Codeforces 如果存在长度\(>3\)的等差子序列,那么一定存在长度\(=3\)的等差子序列,所以我们只需要找长度为\(3\)的等差子序列.可以枚举等差子 ...

  3. bzoj 2819 Nim dfn序+树状数组维护区间异或值

    题目大意 著名游戏设计师vfleaking,最近迷上了Nim.普通的Nim游戏为:两个人进行游戏,N堆石子,每回合可以取其中某一堆的任意多个,可以取完,但不可以不取.谁不能取谁输.这个游戏是有必胜策略 ...

  4. BZOJ 3881 [COCI2015]Divljak (Trie图+Fail树+树链的并+树状数组维护dfs序)

    题目大意: Alice有n个字符串S_1,S_2...S_n,Bob有一个字符串集合T,一开始集合是空的. 接下来会发生q个操作,操作有两种形式: “1 P”,Bob往自己的集合里添加了一个字符串P. ...

  5. [poj3378] Crazy Thairs (DP + 树状数组维护 + 高精度)

    树状数组维护DP + 高精度 Description These days, Sempr is crazed on one problem named Crazy Thair. Given N (1 ...

  6. ACdreamoj 1011(树状数组维护字符串hash前缀和)

    题目链接:http://acdream.info/problem? pid=1019 题意:两种操作,第一种将字符串某个位置的字符换为还有一个字符.另外一种查询某个连续子序列是否是回文串: 解法:有两 ...

  7. BZOJ 2727 双十字(树状数组)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2727 题意: 思路:思路来自这里.首先对于每个位置(i,j)用C[i][j]表示该位置同 ...

  8. HDU 5869 Different GCD Subarray Query (GCD种类预处理+树状数组维护)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5869 问你l~r之间的连续序列的gcd种类. 首先固定右端点,预处理gcd不同尽量靠右的位置(此时gc ...

  9. POJ 3321 Apple Tree(后根遍历将树转化成序列,用树状数组维护)

    题意:一棵树,有很多分叉,每个分叉上最多有1个苹果. 给出n,接下来n-1行,每行u,v,表示分叉u,v之间有树枝相连.这里数据中u相当于树中的父节点,v相当于子节点. 给出两个操作: 1.C x  ...

随机推荐

  1. 【转】cocos2d-x如何优化内存的应用

    原地址:http://cblog.chinadaily.com.cn/blog-942327-4327173.html 注:自身以前也写过cocos2d-x如何优化内存的应用,以及内存不够的情况下怎么 ...

  2. 您的下个中文网站可以使用的5个高质量中文Webfont

    你有没有考虑为什么中文网站的版式风格不像大多数现代英文网站那样丰富?您想了解如何让您的下一个中文网站项目更吸引用户的眼球么?继续往下读吧…… 根据Smashing Magazine进行的一项调查显示  ...

  3. Python3 标准库:sys

    import sys print(sys.argv[0]) print(sys.argv[1]) print(len(sys.argv)) print(str(sys.argv)) print(sys ...

  4. [leetcode-779-K-th Symbol in Grammar]

    On the first row, we write a 0. Now in every subsequent row, we look at the previous row and replace ...

  5. POJ 3608 Bridge Across Islands(计算几何の旋转卡壳)

    Description Thousands of thousands years ago there was a small kingdom located in the middle of the ...

  6. 在Excel里面,单元格里输入公式后只显示公式本身,不显示结果,怎么办

    这种情况是对Excel进行了设置,设置的就是在单元格中只显示公式,不显示结果,解决的办法有两个: 1 用快捷键CTR+~ 2 点击"公式"选项卡,然后反选里面的"显示公式 ...

  7. 感谢信——Alpha版

    作为Thunder团队的leader,当时担任组长,说实话,确实是头脑一热,可后来,在确定选题时,看着大家都有自己的想法,看着大家都那么踊跃,而我因为性格的原因,总是难以做决定,导致选题这件事就开了几 ...

  8. Thunder团队第二周 - Scrum会议5

    Scrum会议5 小组名称:Thunder 项目名称:爱阅app Scrum Master:苗威 工作照片: 参会成员: 王航:http://www.cnblogs.com/wangh013/ 李传康 ...

  9. win7 个人电脑 IIS7服务器(web服务器) 同一局域网下均可访问本机网页

    建立web服务器: 1.控制面板-->程序-->打开或关闭windows功能-->internet信息服务全部打钩,确定即可. 访问网页: 1.C:\inetpub\wwwroot\ ...

  10. ASP.NET 最全的POST提交数据和接收数据 —— (1) 用url传参方式

    //1.对象提交,字典方式 //接口方:public ActionResult GetArry(Car model) public void PostResponse() { HttpWebReque ...