题目

对于一个由正整数组成的序列, Magical GCD 是指一个区间的长度乘以该区间内所有数字的最大公约数。给你一个序列,求出这个序列最大的 Magical GCD。

分析

根据暴力的思想,

\(枚举i,枚举j,a[j]=gcd(a[j],a[i])\)

答案就是\(max(a[j]*(i-j+1))\)

显然,当\(a[j]=a[j-1]\)的时候,\(a[j]\)就一定不会更新ans,所以,弄个双向链表,把\(a[j]\)踢掉。

#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const int maxlongint=2147483647;
const int mo=1000000007;
const int N=100005;
using namespace std;
long long a[N],n,m,T,p,q,last[N],next[N],ans;
long long gcd(long long x,long long y)
{
if(x!=0) return gcd(y%x,x);
else return y;
}
int main()
{
scanf("%lld",&T);
while(T--)
{
scanf("%lld",&n);
next[0]=1;
for(int i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
last[i]=i-1;
next[i]=i+1;
}
last[1]=next[n]=0;
ans=0;
for(int i=1;i<=n;i++)
for(int j=next[0];j<=i && j;j=next[j])
{
a[j]=gcd(a[j],a[i]);
ans=max(a[j]*(i-j+1),ans);
if(a[j]==a[last[j]])
{
next[last[j]]=next[j];
last[next[j]]=last[j];
}
}
printf("%lld\n",ans);
}
}

最新文章

  1. iOS导航控制器常用函数与navigationBar常用属性
  2. *HDU1969 二分
  3. Three.js typescript definitely typed 文件
  4. Spark Streaming 事务处理彻底掌握
  5. 汇编查看StackFrame栈帧
  6. 一些不认识的开源js(更新ing。。。)
  7. jquery 判断是否 ie6 ie7 ie8
  8. BZOJ1596: [Usaco2008 Jan]电话网络
  9. While installing plugin in eclipse luna, “Unable to acquire PluginConverter service” and “No repository found” errors appear in logs
  10. spring Annotation 笔记2.1
  11. CountDownLatch与CyclicBarrier
  12. nginx rewrite重写
  13. 「JLOI2015」城池攻占 解题报告
  14. (线段判交的一些注意。。。)nyoj 1016-德莱联盟
  15. SpringBoot之OAuth2.0学习之客户端快速上手
  16. [模板][P3808]AC自动机(简单版)
  17. python学习笔记之二
  18. FileOutPutStream in 创新实训 自然语言交流系统
  19. 006-springboot2.0.4 配置log4j2,以及打印mybatis的sql
  20. swig的语法和用法

热门文章

  1. [Amazon] Program for Fibonacci numbers 斐波那契数列
  2. freebsd 隐藏ssh版本号
  3. USACO4.3 Buy Low, Buy Lower【简单dp&#183;高精度】
  4. jinja2模板接受
  5. shiro登陆认证
  6. 一、Kubernetes_V1.10集群部署-master-生成证书
  7. c语言Ι博客作业04
  8. 并发之AQS原理(二) CLH队列与Node解析
  9. 事件循环(EventLoop)的学习总结
  10. 解决 SQLPlus无法登陆oracle,PLSql可以登陆,报错ORA-12560