[BZOJ]4488: [Jsoi2015]最大公约数 结论暴力
来源:互联网 发布:没有网络的游戏 编辑:程序博客网 时间:2024/06/07 00:02
Description
给定一个长度为 N 的正整数序列Ai对于其任意一个连续的子序列
{Al,Al+1…Ar},我们定义其权值W(L,R )为其长度与序列中所有元素的最大公约数的乘积,即W(L,R) = (R-L+1) ∗ gcd (Al..Ar)。
JYY 希望找出权值最大的子序列。
题解:
结论:固定右端点
代码:
#include<bits/stdc++.h>using namespace std;#define LL long longconst int Maxn=100010;LL read(){ LL x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();} return x*f;}int n;LL a[Maxn];LL gcd(LL a,LL b){return((b==0)?a:gcd(b,a%b));}struct A{int x;LL g;}f[2][Maxn];bool cmp(A a,A b){return((a.g==b.g)?a.x<b.x:a.g<b.g);}int main(){ LL ans=0; scanf("%d",&n); for(int i=1;i<=n;i++)a[i]=read(); int l=0,now=1,last=0; for(int i=1;i<=n;i++) { for(int j=1;j<=l;j++)f[last][j].g=gcd(f[last][j].g,a[i]); f[last][++l].g=a[i];f[last][l].x=i; sort(f[last]+1,f[last]+1+l,cmp); int ll=0;f[last][0].g=-1; for(int j=1;j<=l;j++) if(f[last][j-1].g!=f[last][j].g)f[now][++ll]=f[last][j]; for(int j=1;j<=ll;j++)ans=max(ans,(LL)(i-f[now][j].x+1)*f[now][j].g); l=ll;last^=1;now^=1; }printf("%lld",ans);}
阅读全文
2 0
- [BZOJ]4488: [Jsoi2015]最大公约数 结论暴力
- bzoj 4488: [Jsoi2015]最大公约数
- bzoj 4488: [Jsoi2015]最大公约数
- 4052: [Cerc2013]Magical GCD/4488: [Jsoi2015]最大公约数
- bzoj 4472: [Jsoi2015]salesman
- bzoj 4474: [Jsoi2015]isomorphism
- BZOJ 4481 [Jsoi2015] 非诚勿扰
- bzoj 4481 [Jsoi2015]非诚勿扰
- [BZOJ4475][JSOI2015]子集选取(DP+结论)
- [BZOJ4488][JSOI2015]最大公约数 DP+STL
- 【bzoj4488: [Jsoi2015]最大公约数】性质题
- uva 10120(暴力+结论)
- bzoj 4475: [Jsoi2015]子集选取
- bzoj 4477: [Jsoi2015]字符串树
- BZOJ 4475: [Jsoi2015]子集选取
- bzoj 4487 [Jsoi2015]染色问题
- BZOJ 4487 [Jsoi2015] 染色问题
- BZOJ 4484 [Jsoi2015] 最小表示
- springboot 热部署
- 第7周项目2-建立链队算法库
- 第2章-从头开始:自然数 2.3-乘法
- window系统下部署多个tomcat
- 数据库设置缺陷导致的MySQL查询不准确问题
- [BZOJ]4488: [Jsoi2015]最大公约数 结论暴力
- 第八周项目1---建立顺序串的算法库
- 营销型网站如何正确做好优化?
- ES6之let命令妙用
- DataStage通过ODBC连接MySql数据库(解决乱码吆)
- redis面试总结
- Android输入事件从读取到分发四:InputDispatcherThread发送事件到View结构树的过程
- 【第5周】项目2-建立链栈算法库
- linux初学之管理网络