什么沙雕题啊……考察的是啥啊,分类咋搞啊……愁死我了……

先把作者的正解放出来:

序列
因为选出的一段是一个等比序列的子序列,我们分为两种情况:
1. q=1,相当于找一个最长每个数都相等的子串,这个扫一遍就行了。
2. q!=1,那么这个序列最长只有 logn,那么我们可以枚举开头,不妨设开始的两个数为 a[i]和 a[i+1],
其中比较大的一个为 x,另一个 y。
(1) 首先要满足 x%y=0
(2) 让 z=x/y,然后把 z 质因数分解,z=p1^q1*p2^q2*p3^q3......,设 g=gcd(q1,q2,q3...),那么当前序
列的最小公比就是 p1^(q1/g)*p2^(q2/h)*......
(3) 我们找到最小公比后,每当往后加一个数,判断它与前边的数的比是否是最小公比的整次幂,
不是的话就说明不能再加了。
(4) 还有一个要求就是这个序列里不能有重复的数,这个东西用 set 判断就行了。
复杂度 nlog2 n
Ps:因为这道题的数据实在是不好造,所以最后公比最大不会很大,可能有很多其他算法也能跑过去。

然而各路大佬各种nb的暴力卡数据都A掉了这题,(只有我这个蒟弱暴力都能爆0……)

首先求出q=1时的答案ans,

枚举q1~1000,如果ans个q乘起来超过了数列的最大值,break;

然后就是一个&n^2&的暴力,用map处理重复的数,复杂度好高……

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<set>
#include<map>
#define int LL
#define LL long long
#define ma(x) memset(x,0,sizeof(x))
#define max(a,b) ((a)>(b)?(a):(b))
using namespace std;
int n;
LL A[200010];
LL l=1,r=100000,mid,q;
LL ans=1,maxn;
map<int,int> mp;
inline LL read()
{
LL s=0;char a=getchar();
while(a<'0'||a>'9')a=getchar();
while(a>='0'&&a<='9'){s=s*10+a-'0';a=getchar();}
return s;
}
LL gcd(int a,int b){return !b?a:gcd(b,a%b);}
signed main()
{
// freopen("in.txt","r",stdin);
// freopen("0.out","w",stdout); n=read();
for(int i=1;i<=n;i++)A[i]=read(),maxn=max(maxn,A[i]);
int L=0,R=0;r=n;
for(int i=1;i<=n;i++)
{
if(A[i]==A[i-1]&&!L)L=i-1;
if(A[i]!=A[i-1]&&L)ans=max(ans,i-L),L=i;
}
if(A[n]==A[n-1])ans=max(ans,n-L+1);
bool pd=0;
for(int q=2;q<=100;q++)
{
int tem=0;
for(int i=1;i<=ans;i++)
{
tem*=q;if(q>maxn){pd=1;break;}
}
if(pd)break;
for(int i=1;i<=n;i++)
{
mp.clear();
int tem=A[i];
mp[tem]=1;
if(tem%q!=0&&tem>q){continue;}
while(tem%q==0)tem/=q;
// while(tem>=q)tem/=q;
for(int j=i+1;j<=n;j++)
{
int te=A[j];
if(mp.find(te)!=mp.end()){ans=max(ans,j-i);break;}
if(te%q!=0&&te!=tem){ans=max(ans,j-i);break;}
while(te%q==0)te/=q;
if(te!=tem){ans=max(ans,j-i);break;}
}
}
}
printf("%lld\n",ans);
}

HZOI20190714 T1序列的更多相关文章

  1. 牛客网《BAT面试算法精品课》学习笔记

    目录 牛客网<BAT面试算法精品课>学习笔记 牛客网<BAT面试算法精品课>笔记一:排序 牛客网<BAT面试算法精品课>笔记二:字符串 牛客网<BAT面试算法 ...

  2. java手工从键盘输入数字存放到数组并将其输出

    package suanfafenxi; import java.util.Scanner; public class shiyan { static int number=10; static in ...

  3. 20190921-雅礼Day1

    #error 此人太蒻无法编译 #include<iostream> main(){} Before 哦…… -O2 T1 序列问题:分块(莫队),树状数组,线段树,分治 离线 or 在线 ...

  4. NOI On Line 提高组题解

    (话说其实我想填的是去年CSP的坑...但是貌似有一道题我还不会写咕咕咕... 先写一下这一次的题解吧. T1:序列.题意省略. 两种操作.这种题要先分析部分分 给出了全部都是2操作的子任务. 发现A ...

  5. 2021.5.22 noip模拟1

    这场考试考得很烂 连暴力都没打好 只拿了25分,,,,,,,,好好总结 T1序列 A. 序列 题目描述 HZ每周一都要举行升旗仪式,国旗班会站成一整列整齐的向前行进. 郭神作为摄像师想要选取其中一段照 ...

  6. 5.22考试总结(NOIP模拟1)

    5.22考试总结(NOIP模拟1) 改题记录 T1 序列 题解 暴力思路很好想,分数也很好想\(QAQ\) (反正我只拿了5pts) 正解的话: 先用欧拉筛把1-n的素数筛出来 void get_Pr ...

  7. NOI Online 提高组 题解

    来补坑了-- 个人认为三道题难度差不多-- 还有要说一嘴,为啥我在其他网站代码都好好的,复制到 cnblogs 上 Tab 就成 8 空格了?不过也懒得改了. T1 序列 首先,遇到这种加一减一还带附 ...

  8. 上午小测3 T1 括号序列 && luogu P5658 [CSP/S 2019 D1T2] 括号树 题解

    前 言: 一直很想写这道括号树..毕竟是在去年折磨了我4个小时的题.... 上午小测3 T1 括号序列 前言: 原来这题是个dp啊...这几天出了好几道dp,我都没看出来,我竟然折磨菜. 考试的时候先 ...

  9. 【6.12校内test】T1单词序列

    [问题描述] 给出两个单词(开始单词和结束单词)以及一个词典.找出从开始单词转换到结束单词, 所需要的最短转换序列.转换的规则如下: 1.每次只能改变一个字母 2.转换过程中出现的单词(除开始单词和结 ...

随机推荐

  1. 直接在安装了redis的Linux机器上操作redis数据存储类型--List类型

    一.概述: 在Redis中,List类型是按照插入顺序排序的字符串链表.和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素.在插入时,如果该键并不存在,Redis ...

  2. 解决驱动版本不对应导致的UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0

    org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is ...

  3. springmvc jsp向controller传参,一直为null

    怎么检查都无解 重启电脑好了

  4. java笔记之split

    Java split()用法 特殊情况有 * ^ : | . \ 一.单个符号作为分隔符  String address="上海\上海市|闵行区\吴中路"; String[] sp ...

  5. 日志lombok插件安装及配置

    安装lombok插件 下载Lombok.jar http://projectlombok.googlecode.com/files/lombok.jar 运行Lombok.jar java -jar ...

  6. 使用Docker 安装Elasticsearch、Elasticsearch-head、IK分词器 和使用

    原文:使用Docker 安装Elasticsearch.Elasticsearch-head.IK分词器 和使用 Elasticsearch的安装 一.elasticsearch的安装 1.镜像拉取 ...

  7. 微服务开源生态报告 No.8

    「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源项目的最新进展. 社区动态包括,但不限于:版本发布.人员动态.项目动态和规划.培训和活动. 非常欢迎国内其他微服 ...

  8. SVN客户端操作(clean up|commit|update)系统找不到指定的文件

    前天电脑中毒,更新SVN的时候,发现以下错误: Can't open file 'XXXXX\.svn\pristine\7a\7ab8cc591cd8b0425a0e6331cc52756d15ba ...

  9. 编译libusb库

    之前需要安装依赖库 : libudevautomakeautoconflibtool ./bootstrap.sh ./configure --with-pic --prefix=/home/libu ...

  10. Mysql查询优化-DB篇

    本文重点从数据库本身角度,硬件和环境的优化不在本文范围内 1. 使用索引(Index All Columns Used in 'where', 'order by', and 'group by' C ...