题目链接

http://www.bnuoj.com/bnuoj/problem_show.php?pid=34777

题意

如样例

输入

1
5
30 60 20 20 20

输出

80

如  30 和 60 的最大公约数是 30 他们是两个数 因而为2*30=  60  但他不是最大的  60 20 20 20 的最大公约数是 20  他们有四个数 4*20=80;他是最大的

所以输出 80;

代码     1;

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#define ll long long
using namespace std;
ll a[100000+10];
map<ll,ll>v;
map<ll,ll>::iterator it,itit;
ll Max(ll x,ll y)
{
return x>y?x:y;
}
ll gcd(ll a,ll b)
{
if(a==0) return b;
if(b==0) return a;
return gcd(b,a%b);
}
int main()
{
int t,n;
scanf("%d",&t);
while (t--)
{
ll ans=0;
scanf("%d",&n);
v.clear();
for (int i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
ans=Max(ans,a[i]);
for (it=v.begin();it!=v.end();it++)
{
if(gcd(it->first,a[i])!=it->first)
{
if (v[gcd(it->first,a[i])]==0)
v[gcd(it->first,a[i])]=it->second;
itit=it++;
v.erase(itit,it);
it--;
}
}
if (v[a[i]]==0)v[a[i]]=i;
for (it=v.begin();it!=v.end();it++)
{
ans=Max(ans,(it->first)*(i-it->second+1));
}
}
printf("%lld\n",ans);
}
return 0;
}

代码   2;

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
#define LL long long
LL num[100010];
struct node
{
LL g,len;
int t;
} gc[100010];
LL gcd(LL a,LL b)
{
if(!b) return a;
else return gcd(b,a%b);
}
LL ma(LL a,LL b)

{
return a>b?a:b;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,len=0,st=-1;
scanf("%d",&n);
for(int i=0; i<n; i++)
scanf("%lld",&num[i]);
LL maxx=0;
for(int i=0; i<n; i++)
{
maxx=ma(maxx,num[i]);
gc[len].g=num[i];
gc[len].len=1;
gc[len].t=st;
st=len++;
int la=st;
for(int j=gc[st].t; j>=0; j=gc[j].t)
{
gc[j].g=gcd(gc[j].g,num[i]);
while(gc[j].t>=0&&gc[j].g==gcd(num[i],gc[gc[j].t].g))
{
//printf("%d %d: %lld %lld\n",j,gc[j].t,gc[j].g,gcd(num[i],gc[gc[j].t].g));
gc[gc[j].t].g=gc[j].g;
j=gc[j].t;
}
gc[la].t=j;
gc[j].len++;
la=j;
maxx=ma(maxx,gc[j].len*gc[j].g);
}
//for(int j=st; j>=0; j=gc[j].t)
// printf("%lld %d\n",gc[j].g,gc[j].len);
//puts("");
}
printf("%lld\n",maxx);
}
return 0;
}

BNU Online Judge-34777-Magical GCD的更多相关文章

  1. 4052: [Cerc2013]Magical GCD

    4052: [Cerc2013]Magical GCD Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 148  Solved: 70[Submit][ ...

  2. 【BZOJ】【4052】【CERC2013】Magical GCD

    DP/GCD 然而蒟蒻并不会做…… Orz @lct1999神犇 首先我们肯定是要枚举下端点的……嗯就枚举右端点吧…… 那么对于不同的GCD,对应的左端点最多有log(a[i])个:因为每次gcd缩小 ...

  3. Magical GCD UVA 1642 利用约数个数少来优化 给定n个数,求使连续的一段序列的所有数的最大公约数*数的数量的值最大。输出这个最大值。

    /** 题目:Magical GCD UVA 1642 链接:https://vjudge.net/problem/UVA-1642 题意:给定n个数,求使连续的一段序列的所有数的最大公约数*数的数量 ...

  4. 【BZOJ4052】[Cerc2013]Magical GCD 乱搞

    [BZOJ4052][Cerc2013]Magical GCD Description 给出一个长度在 100 000 以内的正整数序列,大小不超过 10^12.  求一个连续子序列,使得在所有的连续 ...

  5. [BZOJ4052][Cerc2013]Magical GCD

    [BZOJ4052][Cerc2013]Magical GCD 试题描述 给出一个长度在 100 000 以内的正整数序列,大小不超过 10^12.  求一个连续子序列,使得在所有的连续子序列中,它们 ...

  6. UVA - 1642 Magical GCD 数学

                                  Magical GCD The Magical GCD of a nonempty sequence of positive integer ...

  7. 【NOIP2014模拟8.17】Magical GCD

    题目 对于一个由正整数组成的序列, Magical GCD 是指一个区间的长度乘以该区间内所有数字的最大公约数.给你一个序列,求出这个序列最大的 Magical GCD. 分析 根据暴力的思想, \( ...

  8. Open judge C16H:Magical Balls 快速幂+逆元

    C16H:Magical Balls 总时间限制:  1000ms 内存限制:  262144kB 描述 Wenwen has a magical ball. When put on an infin ...

  9. BZOJ 4052: [Cerc2013]Magical GCD

    以一个数字开头的子序列的gcd种类不会超过logn种,因此去找相同gcd最长的位置,更新一下答案,复杂度O(nlogn^2) #include<cstdio> #include<al ...

  10. uva 1642 Magical GCD

    很经典的题目,愣是没做出来.. 题意:给出一个序列,求一子序列,满足其GCD(子序列)* length(子序列)最大. 题解: 类似单调队列的思想,每次将前面所得的最大公约数与当前数进行GCD,若GC ...

随机推荐

  1. 归心似箭,IT达人分享抢票攻略

    [51CTO专稿]随着春节一天天临近,“购票难”的问题也愈发凸显,猎豹.火狐.360等“春运抢票神器”占领了各大网站的重要版面,“技术抢票”成为炙手可热的话题,看看身为程序员的邓以克是如何抢到回家的票 ...

  2. Chapter 1 First Sight——4

    Charlie gave me an awkward, one-armed hug when I stumbled my way off the plane. 当我让我蹒跚的从飞机上下来,查理斯单手给 ...

  3. opencart添加任意页面到导航栏(修改一级菜单)

      pencart默认的黑色导航栏只显示分类目录下的一级分类,这块整个网页中最显眼的“风水宝地”怎么能让他闲置呢,因此我想到了为opencart导航栏添加自定义页面,它可以连接到任意一个网址或者ope ...

  4. Cordova插件开发

    我在网上找了很多关于Cordova插件开发的例子,都不是我想要的,我只想要,怎么调用这个生成出来的js,最终得到了最为直接又简单的方法,希望给能帮助到大家! document.addEventList ...

  5. CvvImage类

    从OpenCV 2.2.0开始,OpenCV取消了CvvImage这个类.可是今天要用到,可以自己加入到工程中. 首先,找到CvvImage的原代码.我在网上已经找到了,具体代码如下. 这是CvvIm ...

  6. javascript 实现加法分离。 plus(3)(4); // => 得到 7

    原文地址:http://cnodejs.org/topic/5230d5f0101e574521c86ff4 JavaScript 的设计是典型的函数式的编程范式匿名函数 JSON数据本身就是字符串, ...

  7. SSL 通信原理及Tomcat SSL 双向配置

    SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...

  8. winform无法查看设计器

    在代码中右键无法查看设计器.将无效的引用去除,重新生成即可.

  9. LVS+Keppalived实现高可用负载均衡

    三.LVS Keppalived的安装 3.1.环境描述 LVS server1 (Master):10.0.0.202 虚拟IP为:10.0.0.210 LVS server2 ( Slave ) ...

  10. (中等) HDU 1043 Eight,经典搜索问题。

    Problem Description The 15-puzzle has been around for over 100 years; even if you don't know it by t ...