【数论】【暴力】bzoj4052 [Cerc2013]Magical GCD
2015-05-12 07:52
381 查看
考虑向一个集合里添加一个数,它们的gcd要么不变,要么变成原gcd的一个约数。因此不同的gcd只有log个。
所以对于每个位置,维护一个表,存储从这个位置向前所有的不同的gcd及其初始位置,然后暴力更新答案,反正这个表不会很长。
所以对于每个位置,维护一个表,存储从这个位置向前所有的不同的gcd及其初始位置,然后暴力更新答案,反正这个表不会很长。
#include<cstdio> #include<algorithm> #include<cstring> using namespace std; #define N 100001 typedef long long ll; typedef pair<ll,int> Point; Point table[101],t[101]; int T,n,en,e2; ll gcd(ll a,ll b){return (!b)?a:gcd(b,a%b);} int main() { ll x; scanf("%d",&T); for(;T;--T) { ll ans=0; en=0; scanf("%d",&n); for(int i=1;i<=n;++i) { scanf("%lld",&x); for(int j=1;j<=en;++j) table[j].first=gcd(table[j].first,x); table[++en]=make_pair(x,i); sort(table+1,table+1+en); e2=0; for(int j=1;j<=en;++j) if(table[j].first!=table[j-1].first) t[++e2]=table[j]; en=e2; memcpy(table+1,t+1,sizeof(Point)*e2); for(int j=1;j<=en;++j) ans=max(ans,table[j].first*(ll)(i-table[j].second+1)); } printf("%lld\n",ans); } return 0; }
相关文章推荐
- 【BZOJ 4052】[Cerc2013]Magical GCD 暴力+gcd
- 【bzoj4052】[Cerc2013]Magical GCD 暴力
- bzoj 4052: [Cerc2013]Magical GCD 暴力
- 【BZOJ4052】[Cerc2013]Magical GCD 乱搞
- BZOJ 4052 Cerc2013 Magical GCD
- 【BZOJ】【4052】【CERC2013】Magical GCD
- bzoj 4052: [Cerc2013]Magical GCD
- bzoj 4052: [Cerc2013]Magical GCD
- 【BZOJ4052】【Cerc2013】Magical GCD 单调栈
- Gym 100299C && UVaLive 6582 Magical GCD (暴力+数论)
- BZOJ 4052: [Cerc2013]Magical GCD
- BZOJ 4052: [Cerc2013]Magical GCD
- 【CERC2013】bzoj4052 Magical GCD
- [Cerc2013]Magical GCD
- bzoj 4052: [Cerc2013]Magical GCD
- 【CERC2013】【BZOJ4052】Magical GCD
- BZOJ 4052 Magical GCD
- UVa 1642 Magical GCD (暴力+数论)
- BZOJ_P2820 YY的GCD(数论+莫比乌斯反演)
- BZOJ 3738 Ontak2013 Kapitał 数论