题目链接

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. Java关键字transient和volatile小结(转)

    Java关键字transient和volatile小结(转) transient和volatile两个关键字一个用于对象序列化,一个用于线程同步,都是Java中比较高阶的话题,简单总结一下. tran ...

  2. APK自我保护方法

    标 题: [原创]APK自我保护方法 作 者: MindMac 时 间: 2013-12-28,21:41:15 链 接: http://bbs.pediy.com/showthread.php?t= ...

  3. IE6里面display:inlineblock使得块元素成行排列,没用

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. Qt5:无边框窗口拖动

    在窗口程序中,无边框窗口程序一般需要特殊处理才能拖动 Qt中,要实现无边框窗口的拖动,需要重新实现 mousePressEvent 和 mouseMoveEvent 俩虚函数 void Widget: ...

  5. PAT1011

    With the 2010 FIFA World Cup running, 随着2010世界杯的举行 football fans the world over were becoming increa ...

  6. this.button1.Click += new System.EventHandler(this.button1_Click);

    在这个程序里,这里的修改是为了更好理解,当然这种写法是语法错误的. 下面我们对其进行分析: 首先,观察“=”右面的表达式. new System.EventHandler(this.button1_C ...

  7. Allegro PCB -通孔焊盘制作 及Flash制作

    通孔焊盘制作,比如插针封装 数值确定: mil单位                                                                           ...

  8. CSS实现三角形方法一--rotate+relative

    方法说明:两个正方形,一个小的,一个大的,将大的正方向进行旋转,然后移动到小的正方形的合适位置,覆盖小正方形的一部分,使小正方形剩余部分为三角形,再把大正方形的背景色改为浏览器窗口的颜色. 用到知识: ...

  9. HDU 2121 Ice_cream’s world II 最小树形图 模板

    开始学习最小树形图,模板题. Ice_cream’s world II Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32 ...

  10. php的autoload机制

    php5版本中,当你尝试使用一个未定义的类或者接口时,会自动调用__autoload()函数 例如1 <?php function __autoload($class_name){ includ ...