[ Nowcoder Contest 175 #B ] 区间
2024-08-23 15:24:29
\(\\\)
\(Description\)
给出一个长度为\(N\)的序列\(A[1]...A[N]\),定义一个合法区间 \([L,R]\) 当且仅当区间\(GCD\) 在这个区间内,求最长合法区间长度。
- \(N\in [1,4\times 10^{6}]\)
\(\\\)
\(Solution\)
考虑以每一个数作为区间\(GCD\)的答案\((\)下面称作“中心”\()\),答案区间画在数轴上是什么样的。
一定是由若干个大区间,然后一些小区间都被大区间完全包含,大区间有交,但是都不会越过中心。
只考虑一个位置\(i\)到它右边的数所构成的合法区间。
假如他的右区间可以扩展到\(j\),那么这\(j-i\)个数的右端点一定\(\le\ i\) 处的答案。
因为显然这\(j-i\) 个数字都是 \(i\) 的倍数,若他们还能向右扩展,则 \(i\) 的答案也能向右扩展。
显然从每一个位置向右扩展复杂度是\(N^2\)的,但是考虑这\(j-i\)个点的左端点显然不会越过\(i\),右端点答案显然不会越过\(i\) 对应的右端点,所以直接把这些点的右端点设为\(i\) 的右端点并不会出锅。
正反扫描一遍区间长度取 \(max\) 就是答案。
\(\\\)
\(Code\)
#include<cmath>
#include<cstdio>
#include<cctype>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define R register
#define gc getchar
#define N 4000010
using namespace std;
typedef long long ll;
inline ll rd(){
ll x=0; bool f=0; char c=gc();
while(!isdigit(c)){if(c=='-')f=1;c=gc();}
while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=gc();}
return f?-x:x;
}
ll n,a[N];
int res,ans[N];
int main(){
n=rd();
for(R int i=1;i<=n;++i) a[i]=rd();
for(R int i=1,r=1;i<=n;++i){
if(r<i) r=i;
while(r<n&&a[r+1]%a[i]==0) ++r;
ans[i]=r;
}
for(R int i=n,l=n;i>0;--i){
if(l>i) l=i;
while(l>1&&a[l-1]%a[i]==0) --l;
res=max(res,ans[i]-l+1);
}
printf("%d",res);
return 0;
}
最新文章
- Autofac 的属性注入,IOC的坑
- 9.2.3 .net core 通过TagHelper封装控件
- 前端学PHP之文件操作
- Mac系统下使用VirtualBox虚拟机安装win7--第四步 安装虚拟机硬件扩展包支持
- 2014 Asia AnShan Regional Contest --- HDU 5078 Osu!
- linux 查看服务器性能常用命令
- ansible 使用方法
- go语言使用redis —— redigo
- TDirectory.GetFileSystemEntries获取指定目录下的目录和文件
- DEV控件的使用(二次封装BaseUI)
- MyEclipse安装xfire插件
- jQuery制作右侧边垂直二级导航菜单
- Java企业微信开发_05_消息推送之发送消息(主动)
- linux之无名管道
- 关于java以及JavaScript或者更多的语言中Data类的问题
- MyBatis 中一对一和一对多的映射关系
- docker容器安装vi (一般容器都是Debian GNU/Linux 9)
- shell 脚本示例
- HTML5的优点与缺点?
- RESTful架构解读
热门文章
- how to read openstack code: Neutron architecture
- the apple code
- Jquery第四课 Javascript中this的使用方法
- Wordpress 建站(一)
- 【POJ 1275】 Cashier Employment(差分约束系统的建立和求解)
- jquery-mobile 学习笔记之中的一个(基础属性)
- fused multiply and add
- NTFS文件系统的单个文件最大到底有多大?
- 有意思的RTL函数RegisterClass(在持久化中,你生成的一个新类的对象,系统并不知道他是如何来的,因此需要你注册)good
- USACO Section 1.2PROB Miking Cows