等差子序列(sequence)

题目描述

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

输入

输入的第一行包含一个整数T,表示组数。

下接T组数据,每组第一行一个整数N,每组第二行为一个1到N的排列,数字两两之间用空格隔开。

输出

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

样例输入

2
3
1 3 2
3
3 2 1

样例输出

N
Y

提示

【数据说明】

对于5%的数据,N<=100

对于30%的数据,N<=1000

对于100%的数据,N<=10000,T<=7


solution

首先只要有3个数满足,那么就行了

我们枚举中间的数ai

我们可以记录每一个数值是否出现过:记为p

如果p是一个以a[i]为对称轴的回文串,那么就是不合法的。

也就是a[i-x],a[i+x]出现状况相同

这个可以用哈希实现

现在我们要维护哈希值,支持修改,区间查询

树状数组啦

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#define maxn 10005
#define ll unsigned long long
#define p 1000000007
using namespace std;
int T,n,a[maxn];
ll ha[maxn],hb[maxn],po[maxn];
void cle(){
for(int i=1;i<=n;i++)ha[i]=hb[i]=0;
}
void add_a(int i,ll v){
for(;i<=n;i+=i&-i)ha[i]+=v;
}
void add_b(int i,ll v){
for(;i<=n;i+=i&-i)hb[i]+=v;
}
ll ask_a(int i){
ll sum=0;for(;i;i-=i&-i)sum+=ha[i];
return sum;
}
ll ask_b(int i){
ll sum=0;for(;i;i-=i&-i)sum+=hb[i];
return sum;
}
int main()
{
cin>>T;
while(T--){
cle();
cin>>n;
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
po[0]=1;for(int i=1;i<=n;i++)po[i]=po[i-1]*p;
bool f=0;
//for(int i=1;i<=n;i++)add_b(a[i],po[n-a[i]+1]);
for(int i=1;i<=n;i++){
add_a(a[i],po[a[i]]);add_b(a[i],po[n-a[i]+1]);
int M=min(a[i],n-a[i]+1); //cout<<"i "<<i<<' '<<a[i]<<' '<<M<<endl;
ll t1=ask_a(a[i])-ask_a(a[i]-M);
ll t2=ask_b(a[i]+M-1)-ask_b(a[i]-1); if(a[i]<n-a[i]+1)t1=t1*po[n-a[i]+1-a[i]];
else t2=t2*po[a[i]-(n-a[i]+1)];
//cout<<t1<<' '<<t2<<endl;
if(t1!=t2){f=1;break;} }
if(f)puts("Y");else puts("N");
}
return 0;
}

等差子序列(sequence)的更多相关文章

  1. BZOJ 2124: 等差子序列

    Sol 线段树+Hash. 首先暴力 等差子序列至少3项就可以了,就枚举中项,枚举公差就可以了,只需要一个数在中项前出现,另一个数在中项前没出现过就可以了.复杂度 \(O(n^2)\) 然后我想了一个 ...

  2. [bzoj2124]等差子序列(hash+树状数组)

    我又来更博啦     2124: 等差子序列 Time Limit: 3 Sec  Memory Limit: 259 MBSubmit: 941  Solved: 348[Submit][Statu ...

  3. 2124: 等差子序列 - BZOJ

    Description 给一个1到N的排列{Ai},询问是否存在1<=p1=3),使得Ap1,Ap2,Ap3,…ApLen是一个等差序列. Input 输入的第一行包含一个整数T,表示组数.下接 ...

  4. BZOJ 2124等差子序列 线段树&&hash

    [题目描述 Description] 给一个 1 到 N 的排列{Ai},询问是否存在 1<=p1<p2<p3<p4<p5<…<pLen<=N(Len& ...

  5. bzoj2124 等差子序列(hash+线段树)

    2124: 等差子序列 Time Limit: 3 Sec  Memory Limit: 259 MBSubmit: 719  Solved: 261[Submit][Status][Discuss] ...

  6. codevs 1283 等差子序列

    http://codevs.cn/problem/1283/ 题目描述 Description 给一个 1 到 N 的排列{Ai},询问是否存在 1<=p1<p2<p3<p4& ...

  7. BZOJ_2124_等差子序列_线段树+Hash

    BZOJ_2124_等差子序列_线段树+Hash Description 给一个1到N的排列{Ai},询问是否存在1<=p1<p2<p3<p4<p5<…<pL ...

  8. P2757 [国家集训队]等差子序列

    P2757 [国家集训队]等差子序列 题目传送门 推荐一篇好题解 此题要求我们在一个序列中找出一个等差子序列. 显然,我们只需要考虑子序列长度len=3的情况,因为在长度为4的子序列中必定有一个长度为 ...

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

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

随机推荐

  1. ubuntu修改IP地址和网关的方法

    一.使用命令设置Ubuntu IP地址 1.修改配置文件blacklist.conf禁用IPV6 sudo vi /etc/modprobe.d/blacklist.conf 表示用vi编辑器(也可以 ...

  2. 侯捷《C++面向对象开发》——动手实现自己的复数类

    前言 最近在看侯捷的一套课程<C++面向对象开发>,刚看完第一节introduction之后就被疯狂圈粉.感觉侯捷所提及所重视的部分也正是我一知半解的知识盲区,我之前也写过一些C++面向对 ...

  3. 使用shell脚本依据分区信息分批次的下载hive表格数据

    今天的业务场景大概是这样的,我想把hive表格下载到本地文件系统,然后把这个文件传送到另一个服务器上. 但是这个业务场景一个核心问题就是说我本地机器内存有限,hive表格大概是70G,我是不可能全部下 ...

  4. ./vi: line 2: mkdir: command not found

    当前两天博主在写脚本的时候,运行脚本时候总是出现此消息,很郁闷, 开始我以为可能是我mkdir的函数库依赖的问题,但是当我用其他的脚本创建 目录的时候,命令又可以用了,找了半天,终于找到了答案 --- ...

  5. 006---Django静态文件配置

    静态文件:Js.Css.Fonts.Image等 这个不难.在setting.py文件加一行 # 别名 用户在url地址栏输入127.0.0.1:8000/static/文件 可以直接访问static ...

  6. POJ:2456-Aggressive cows

    Aggressive cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18313 Accepted: 8716 Desc ...

  7. Highest Tower 18中南多校第一场H题

    一.题意 给出N个方块,要求给出一个方案,使得1. 所有方块都被使用到(题目数据保证这点) 2.所有方块垒成一个塔,且上面的方块宽度小于下面的方块 3.每个方块只能用一次,可以横着或者竖着. n范围5 ...

  8. 3 网格 landing page

    0.大框架 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <tit ...

  9. Windows环境下svn服务器的安装步骤

    做为一个程序开发人员,就算自己一个人写程序,也应该有一个SVN版本控制系统,以便对开发代码进行有效的管理. 下载SVN服务器 下载地址是:http://subversion.apache.org/pa ...

  10. erlang连接mysql [转]

    转自: http://blog.csdn.net/flyinmind/article/details/7740540 项目中用到erlang,同时也用到mysql.惯例,google. 但是,按照网上 ...