4052: [Cerc2013]Magical GCD
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 148 Solved: 70
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
5
30 60 20 20 20
Sample Output
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.