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

题目描述

给一个\(1\)到\(N\)的排列\(\{A_i\}\),询问是否存在

\[1 \le p_1<p_2<p_3<p_4<p_5<…<p_{Len} \le N (Len \ge 3)
\]

使得\(A_{p_1},A_{p_2},A_{p_3},\cdots,Ap_{Len}\)是一个等差序列。

输入输出格式

输入格式:

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

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

输出格式:

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

说明

对于\(5\%\)的数据,\(N\le 100\)

对于\(30\%\)的数据,\(N\le 1000\)

对于\(100\%\)的数据,\(N\le 10000,T\le 7\)


思路真不错啊

显然我们只需要考虑\(len=3\)的情况

对于一段连续的位置\([l,r]\),我们定义一端长为\(n\)的\(01\)串表示这个位置上的数的选取集合

比如区间\([l,r]\)的数字分别为\(2351\),而\(n=6\),那么选取集合为\(111010\)

这样是从小到大排列的,我们同样定义一个从大到小排列的。这样刚刚的例子就是\(010111\)了

考虑枚举等差中项,如果当前枚举到的位置为\(i\)

那么如果\(\tt{Ta}\)左边区间的集合从小到大排列的和从大到小排列的相应长度的位置串是相等的,那么它就不可能作为等差中项。

维护\(01\)串相等可以使用\(\tt{bitset}\)可以通过此题。

也可以使用\(Hash+\text{树状数组}\)维护


Code:

#include <cstdio>
#include <cstring>
#define ll long long
const int N=1e4;
const ll mod=1e9+7;
ll po[N+10],s[2][N+10];
int n;
void add(int typ,int x)
{
for(int i=x;i<=n;i+=i&-i)
(s[typ][i]+=po[x])%=mod;
}
ll query(int typ,int x)
{
ll sum=0;
while(x) (sum+=s[typ][x])%=mod,x-=x&-x;
return sum;
}
int main()
{
po[0]=1;int T;
for(int i=1;i<=N;i++) po[i]=po[i-1]*2%mod;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
memset(s,0,sizeof(s));
int flag=0;ll c1,c2;
for(int a,i=1;i<=n;i++)
{
scanf("%d",&a);
int len1=a-1,len2=n-a;
if(len1>len2)//左边多了
{
int d=len1-len2;
c1=query(0,len1)-query(0,d);
(c1+=mod)%=mod;
c2=query(1,len2)*po[d]%mod;
}
else
{
int d=len2-len1;
c1=query(0,len1)*po[d]%mod;
c2=query(1,len2)-query(1,d);
(c2+=mod)%=mod;
}
if(c1!=c2) flag=1;
add(0,a);
add(1,len2+1);
}
if(flag) puts("Y");
else puts("N");
}
return 0;
}

2018.11.7

洛谷 P2757 [国家集训队]等差子序列 解题报告的更多相关文章

  1. 洛谷 P1852 [国家集训队]跳跳棋 解题报告

    P1852 [国家集训队]跳跳棋 题目描述 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子. 我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在\(a\),\(b\), ...

  2. 洛谷 P1407 [国家集训队]稳定婚姻 解题报告

    P1407 [国家集训队]稳定婚姻 题目描述 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有关. 25岁的 ...

  3. 洛谷 P1501 [国家集训队]Tree II 解题报告

    P1501 [国家集训队]Tree II 题目描述 一棵\(n\)个点的树,每个点的初始权值为\(1\).对于这棵树有\(q\)个操作,每个操作为以下四种操作之一: + u v c:将\(u\)到\( ...

  4. 洛谷 P1527 [国家集训队]矩阵乘法 解题报告

    P1527 [国家集训队]矩阵乘法 题目描述 给你一个\(N*N\)的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第\(K\)小数. 输入输出格式 输入格式: 第一行两个数\(N,Q\),表示矩阵大 ...

  5. 洛谷 P1903 [国家集训队]数颜色 解题报告

    P1903 [国家集训队]数颜色 题目描述 墨墨购买了一套\(N\)支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1.Q L R代表询问你从第\(L\) ...

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

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

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

    题目链接 luogu P2757 [国家集训队]等差子序列 题解 线段树好题 我选择暴力 代码 // luogu-judger-enable-o2 #include<cstdio> inl ...

  8. 模板—点分治A(容斥)(洛谷P2634 [国家集训队]聪聪可可)

    洛谷P2634 [国家集训队]聪聪可可 静态点分治 一开始还以为要把分治树建出来……• 树的结构不发生改变,点权边权都不变,那么我们利用刚刚的思路,有两种具体的分治方法.• A:朴素做法,直接找重心, ...

  9. 洛谷 P1505 [国家集训队]旅游 解题报告

    P1505 [国家集训队]旅游 题目描述 \(\tt{Ray}\) 乐忠于旅游,这次他来到了\(T\)城.\(T\)城是一个水上城市,一共有 \(N\) 个景点,有些景点之间会用一座桥连接.为了方便游 ...

随机推荐

  1. WeTest功能优化第3期:业内首创,有声音的云真机

    第3期功能优化目录 [云真机远程调试]音频同步传输实现测试有声 [兼容性测试报告]新增视频助力动态定位问题 [云真机远程调试]菜单栏优化助力机型选择 本期介绍的新功能,秉承创造用户需求的理念,在云真机 ...

  2. Appium(Python)测试混血App

    Hybrid App(混合模式移动应用)是指介于web-app.native-app这两者之间的app兼具Native App良好用户交互体验的优势和Web App跨平台开发的优势 HybridApp ...

  3. lintcode514 栅栏染色

    栅栏染色 我们有一个栅栏,它有n个柱子,现在要给柱子染色,有k种颜色可以染.必须保证不存在超过2个相邻的柱子颜色相同,求有多少种染色方案. 注意事项 n和k都是非负整数 您在真实的面试中是否遇到过这个 ...

  4. 245. Subtree【LintCode java】

    Description You have two very large binary trees: T1, with millions of nodes, and T2, with hundreds ...

  5. JavaScript写的一个带AI的井字棋

    最近有一门课结束了,需要做一个井字棋的游戏,我用JavaScript写了一个.首先界面应该问题不大,用html稍微写一下就可以.主要是人机对弈时的ai算法,如何使电脑方聪明起来,是值得思考一下的.开始 ...

  6. [SHELL]shell中变量的使用

    1.输出变量 : #! /bin/bash my_var=BOB echo $my_var echo "hi,$my_var" echo "the price is \$ ...

  7. [Clr via C#读书笔记]Cp3共享程序集和强命名程

    Cp3共享程序集和强命名程序集 私有方式部署+全局方式部署:弱命名程序集+强命名程序集 强命名程序集使用发布者的公钥私钥进行签名,唯一标识发布者. 共享dll被全部复制到System32中 强命名程序 ...

  8. Turtlebot

    Turtlebot2 数据分析: imu信息:只有z轴的旋转yaw,没有xy的角速度. odom:利用轮速计,提供平移变换,没有z方向的平移. 好的网站,详细介绍了turtlebot的使用:https ...

  9. struts2之form标签theme属性详解

    struts2中theme属性包括xhtml,html,simple,ajax .默认是xhtml theme:设置struts2标签的主题,默认为xhtml. theme=xhtml时:会默认额外生 ...

  10. 手机站测试工具(node服务器)

    最近在工作中遇到手机站测试的问题,于是就写了一个node服务外加一个第三方的转二维码功能,欢迎拍砖~ 项目地址:https://github.com/finderL/webserver