题目链接

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. hrbust 1721 A + B = 0 map的应用

    13级春季校赛的热身题,但优化后我的代码也超时了,后来看了看学长的解法,觉得最简单的还是map,再一次感受到了map的强大. 题目描述如下 Description There is an intege ...

  2. CodeForces 158B Taxi(贪心)

    贪心,注意优先级,4单独,3与1先匹配,2与2匹配(注意判断2有没有剩下),然后2与两个1匹配,最后4个1匹配就可以了. #include<iostream> #include<cs ...

  3. FZU Problem 2029 买票问题(树状数组)

    当我看到题目是5秒的时候,压根没有想树状数组,一直奔着模拟队列去想了,最后也没搞定,赛后看到大神的题解才恍然大悟,原来如此,题目中有明显的暗示,求前n项和,骤然感叹,自己太low... 果然还是要多做 ...

  4. 自动获取访客QQ

    http://jerring.cn/bizqq/index.html http://www.oicqzone.com/qqjiqiao/2015072322139.html

  5. mysql 索引对于select速度提升作用实验

    说明:News2在News的基础上把is_active加上索引. mysql> select count(*) from News2 where is_active=1; +---------- ...

  6. JS常用校验方法(判断输入框是否为空,数字,电话,邮件,四舍五入等)

    JS常用校验方法: 1.判断输入框是否为空,为空时弹出提示框 2.关闭窗口 3.检查输入字符串是否为数字 4.强制把大写转换成小写 5.手机号码校验,长度为11位数字. 6.电子邮件校验 7.电话号码 ...

  7. CSS的继承性和层叠性

    1.继承性 比不是所有的属性都能继承,只有一些文本的属性才能被继承.比如:color,text-开头的,line-开头的,font-开头的.这几种属性才能被继承. 其余的关于盒子,定位,布局的都不能被 ...

  8. Jquery 源码学习

    https://www.youtube.com/watch?v=qeMFEz_ufZc http://stackoverflow.com/questions/7194784/analysing-the ...

  9. spring MVC 初探 (HelloWorld)

    1.使用spring MVC 需要导入相关jar包 2.web.xml 启用spring MVC <servlet> <servlet-name>spring3mvc</ ...

  10. list集合怎么转化成一个javaBean对象,及常见的使用方法(全)

    一.List集合的用法 1.list集合添加实体并输出 for (int i = 0; i < list.size(); i++) { javabean obj= (javabean)list. ...