4052: [Cerc2013]Magical GCD

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 148  Solved: 70
[Submit][Status][Discuss]

Description

给出一个长度在 100 000 以内的正整数序列,大小不超过 10^12。 
求一个连续子序列,使得在所有的连续子序列中,它们的GCD值乘以它们的长度最大。
 

Input

 

Output

 

Sample Input



30 60 20 20 20

Sample Output

80

HINT

 

Source

题解:我会说这题暴力就水过了?= =实际上此题应该采用的方法也差不多就是暴力= =

很明显,当我们从后往前一路求最大公约数时,最多不会超过logN种(HansBug:因为要么就不变,要变就得至少少一半^_^),所以只需要记录下哪些地方可能引起公因数变化即可——

具体方法:求出两两相邻的两数的最大公约数,然后将所有的前一个公因数不是后一个的倍数的位置记录下来,后面专门留意这些位置即可(HansBug:很明显,要是前者是后者的倍数的话,那么既然都是后面的因数,则必然是前面的因数,不可能引起变化,所以记录下这些就够了,之所以不直接把原数列这么干是因为事实证明两两求下之后的数列突然变得异常优美,想想为什么^_^)

还有个萌萌哒优化:当当前的最大公因数即使到数列最前面都难以超越当前最大值的话,就可以跳掉了

aaarticlea/png;base64,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" alt="" />

(如上是对比,上面的无优化的,下面的是优化的,事实证明快了不是一点= =)

 /**************************************************************
Problem:
User: HansBug
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/ var
i,j,k,l,m,n,t:longint;
ans,v:int64;
a,b:array[..] of int64;
c:array[..] of longint;
function gcd(x,y:int64):int64;inline;
var z:int64;
begin
while y<> do
begin
z:=x mod y;
x:=y;
y:=z;
end;
exit(x);
end;
begin
readln(t);
while t> do
begin
readln(n);ans:=;m:=;c[]:=;
for i:= to n do
begin
read(a[i]);
if a[i]>ans then ans:=a[i];
end;
readln;
for i:= to n- do b[i]:=gcd(a[i],a[i+]);
for i:= to n- do
if (b[i] mod b[i+])<> then
begin
inc(m);c[m]:=i+;
end;
c[m+]:=maxlongint;c[]:=-;
l:=;
for i:= to n- do
begin
while c[l]<=i do inc(l);
dec(l);v:=b[i];
for j:=l downto do
begin
if int64(int64(i-c[j]+)*v)>ans then ans:=(int64(i-c[j]+)*v);
v:=gcd(v,b[c[j]-]);
if int64(int64(i+)*v)<=ans then break;
if v= then
begin
if (i+)>ans then ans:=i+;
break;
end;
end;
end;
writeln(ans);
dec(t);
end;
readln;
end.

4052: [Cerc2013]Magical GCD的更多相关文章

  1. BZOJ 4052: [Cerc2013]Magical GCD

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

  2. BZOJ.4052.[Cerc2013]Magical GCD(思路)

    BZOJ \(Description\) 给定\(n\)个数的序列\(a_i\).求所有连续子序列中,序列长度 × 该序列中所有数的gcd 的最大值. \(n\leq10^5,\ a_i\leq10^ ...

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

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

  4. [BZOJ4052][Cerc2013]Magical GCD

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

  5. [Cerc2013]Magical GCD

    https://vjudge.net/problem/UVA-1642 题意:在一个序列中,找出一段连续的序列,使得长度*gcd最大 固定右端点,当左端点从左向右移动时,gcd不变或变大 gcd相同时 ...

  6. 【bzoj4052】[Cerc2013]Magical GCD 暴力

    题目描述 给出一个长度在 100 000 以内的正整数序列,大小不超过 10^12.  求一个连续子序列,使得在所有的连续子序列中,它们的GCD值乘以它们的长度最大. 样例输入 1 5 30 60 2 ...

  7. 【数论】【暴力】bzoj4052 [Cerc2013]Magical GCD

    考虑向一个集合里添加一个数,它们的gcd要么不变,要么变成原gcd的一个约数.因此不同的gcd只有log个. 所以对于每个位置,维护一个表,存储从这个位置向前所有的不同的gcd及其初始位置,然后暴力更 ...

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

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

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

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

随机推荐

  1. 开篇 Android系统的体系结构

    1.APPLICATIONS (应用程序层) 2.APPLICATION FRAMEWORK(应用程序框架)  android应用程序提供了大量应用程序供开发者使用,当我看开发android应用程序时 ...

  2. Drawerlayou与ScrollView的介绍

    Drawerlayout侧滑 Drawerlayout是Support Library包中实现了侧滑菜单效果的控件. 滚动条(ScrollView) ScrollView和HorizontalScro ...

  3. Android中SharedPreferences介绍和使用方法

    1.SharedPreferences简介 为了保存软件的设置参数,Android 平台为我们提供了一个SharedPreferences 类,它是一个轻量级的存储类,特别适合用于保存软件配置参数.使 ...

  4. win7如何安装mircosoft SDKs

    WIN7不能安装SDK 7.1是因为系统程序里含Microsoft .NET Framework 4 Extended和Microsoft .NET Framework 4 Client Profil ...

  5. 负载均衡软件LVS分析四(测试)

    一.启动LVS集群服务LVS负载均衡管理和使用有两种方式,一种是以ipvsadm命令行脚步与ldirectord监控方式,一种是以Piranha工具进行管理和使用.下面分别介绍. 1.利用ipvsad ...

  6. Struct 和 Union 的详细区别

    Union: 共用体 Struct:结构体 两者的区别: 1:共用体和结构体都是由多个不同的数据类型成员组成, 但在任何同一时刻, 共用体只存放一个被选中的成员, 而结构体则存放所有的成员变量. 2: ...

  7. 微信小程序教程(第四篇)

    小程序开发基本框架及其限制与优化 开发基本框架(MINA框架) └─ Project-folder/ ·································· 项目所在目录 ├─ page ...

  8. ArcGIS制图表达Representation实战篇1-边界线和行道树制作

    ArcGIS制图表达Representation实战篇1-边界线和行道树制作 by 李远祥 即便是有了一些制图表达的基础,很多人还是对ArcGIS制图表达理解停留在表面,因为没有实际的强化训练是很难体 ...

  9. swift注意

    赋值的时候要想为空 可以用   ? 例如 var age1:Int? // ?表示age1的类型为可选类型,其值可以为空print(age1) 判断一个字符串为空字符串if str_empty.isE ...

  10. Easy单例模式

    在学习单例模式前,不妨问自己几个问题:单例模式是怎么来的,单例模式怎么去用? 单例模式是怎么来的? 这就从设计模式起源开始,他是在实际实践中遇到类似情况可以通用经验所得到的总结,一般在其他模块或者方法 ...