BZOJ 4052 Magical GCD
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 4052 Magical GCD相关的知识,希望对你有一定的参考价值。
前缀有log个gcd,用代码中的方法来将nlog^3n优化为nlog^2n。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 100050 using namespace std; long long t,n,a[maxn],tot[maxn],f[maxn][50],g[maxn][50],ans=0; long long gcd(long long a,long long b) { if (b==0) return a; return gcd(b,a%b); } void work() { memset(tot,0,sizeof(tot)); scanf("%lld",&n); for (long long i=1;i<=n;i++) scanf("%lld",&a[i]); for (long long i=1;i<=n;i++) { for (long long j=1;j<=tot[i-1];j++) { long long now=gcd(a[i],f[i-1][j]); if (now!=f[i][tot[i]]) { f[i][++tot[i]]=now; g[i][tot[i]]=g[i-1][j]; } } if (a[i]!=f[i][tot[i]]) { f[i][++tot[i]]=a[i]; g[i][tot[i]]=i; } } ans=0; for (long long i=1;i<=n;i++) for (long long j=1;j<=tot[i];j++) ans=max(ans,f[i][j]*(i-g[i][j]+1)); printf("%lld\n",ans); } int main() { scanf("%lld",&t); for (long long i=1;i<=t;i++) work(); return 0; }
以上是关于BZOJ 4052 Magical GCD的主要内容,如果未能解决你的问题,请参考以下文章
bzoj4052 [CERC2013]Magical GCD
[BZOJ4052][Cerc2013]Magical GCD
bzoj 4052: [Cerc2013]Magical GCD