4488: [Jsoi2015]最大公约数

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 270  Solved: 154
[Submit][Status][Discuss]

Description

给定一个长度为 N 的正整数序列Ai对于其任意一个连续的子序列
{Al,Al+1...Ar},我们定义其权值W(L,R )为其长度与序列中所有元素的最大公约数的乘积,即W(L,R) = (R-L+1) ∗ gcd (Al..Ar)。
JYY 希望找出权值最大的子序列。

Input

输入一行包含一个正整数 N。
接下来一行,包含 N个正整数,表示序列Ai
1 < =  Ai < =  10^12, 1 < =  N < =  100,000

Output

输出文件包含一行一个正整数,表示权值最大的子序列的权值。

Sample Input

5
30 60 20 20 20

Sample Output

80
//最佳子序列为最后 4 个元素组成的子序列。

HINT

Source

[Submit][Status][Discuss]

题解:若n个元素,其后缀所有不同的gcd,不会超过log(n)个,因此可以枚举右端点,进行暴力更新,我们可以设st[2][NMAX],in[2][NMAX]数组,

st数组存取后缀gcd,in数组存取第一次出现gcd的位置,st和in中的2表示有两个状态(即以上一个点为后缀和当前点为后缀),每次都用上一个点

的信息更新当前点的信息。

c++ code:

#include <iostream>
#include <cstdio>
#include <set>
#include <map>
#include <algorithm>using namespace std;
const int NMAX=1e5+7;
typedef long long ll;
ll st[2][NMAX],in[2][NMAX],p,top[2],a[NMAX];
map<ll,int>my;ll gcd(ll a,ll b)
{return b?gcd(b,a%b):a;
}
void init()
{top[0]=top[1]=p=0;
}
int main()
{int n;init();scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%lld",&a[i]);st[p][top[p]]=a[1];in[p][top[p]++]=1;ll ans=a[1];for(int i=2;i<=n;i++){my.clear();for(int j=0;j<top[p];j++){ll GCD=gcd(st[p][j],a[i]);ans=max(ans,GCD*(i-in[p][j]+1));if(!my[GCD]){st[!p][top[!p]]=GCD;in[!p][top[!p]++]=in[p][j];my[GCD]++;}}ans=max(ans,a[i]);if(!my[a[i]]){st[!p][top[!p]]=a[i];in[!p][top[!p]++]=i;my[a[i]]++;}top[p]=0;p=!p;}printf("%lld\n",ans);return 0;
}

转载于:https://www.cnblogs.com/lemon-jade/p/8604214.html

bzoj 4488: [Jsoi2015]最大公约数相关推荐

  1. 【bzoj4488: [Jsoi2015]最大公约数】性质题

    4488: [Jsoi2015]最大公约数 Time Limit: 10 Sec   Memory Limit: 256 MB Submit: 242   Solved: 141 [ Submit][ ...

  2. P5502 [JSOI2015]最大公约数(gcd性质/min性质/分治)

    P5502 [JSOI2015]最大公约数 对于求解(r-l+1)*gcd(l,r)的最大值,首先我们有一个性质,就是一个前缀的gcd本质不同个数只有log个,所以我们可以利用这个性质,然后每次分治处 ...

  3. bzoj 4487: [Jsoi2015]染色问题

    先贴一个题解吧,最近懒得要死2333,可能是太弱的原因吧,总是扒题解,(甚至连题解都看不懂了),blog也没更新,GG http://blog.csdn.net/werkeytom_ftd/artic ...

  4. BZOJ 4481 [Jsoi2015] 非诚勿扰

    Description [故事背景] JYY赶上了互联网创业的大潮,为非常勿扰开发了最新的手机App实现单身 大龄青年之间的"速配".然而随着用户数量的增长,JYY发现现有速配的算 ...

  5. [暑假的bzoj刷水记录]

    (这篇我就不信有网站来扣) 这个暑假打算刷刷题啥的 但是写博客好累啊  堆一起算了 隔一段更新一下.  7月27号之前刷的的就不写了 , 写的累 代码不贴了,可以找我要啊.. 2017.8.27upd ...

  6. ZJOI2019一轮停课刷题记录

    Preface 菜鸡HL终于狗来了他的省选停课,这次的时间很长,暂定停到一试结束,不过有机会二试的话还是可以搞到4月了 这段时间的学习就变得量大而且杂了,一般以刷薄弱的知识点和补一些新的奇怪技巧为主. ...

  7. 退役前的做题记录1.0

    退役前的做题记录1.0 租酥雨最近很懒qwq,具体表现在写题的时候不想发题解了. 但是想想这样也不太好,就决定发个一句话(半句话到几句话不等)题解上来. 2018-09.18-2018-09.28 [ ...

  8. 图论 公约数 找环和链 BZOJ [NOI2008 假面舞会]

    BZOJ 1064: [Noi2008]假面舞会 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1655  Solved: 798 [Submit] ...

  9. BZOJ 2226 [Spoj 5971] LCMSum 最大公约数之和 | 数论

    BZOJ 2226 [Spoj 5971] LCMSum 这道题和上一道题十分类似. \[\begin{align*} \sum_{i = 1}^{n}\operatorname{LCM}(i, n) ...

最新文章

  1. spring源码读书笔记(1)
  2. (八)cmockery中的calculator和run_tests函数的注释代码
  3. 功放音量调节原理_玩汽车音响,功放和喇叭,应该如何做好匹配?
  4. [BTS]BizTalk2006 SqlAdapter UpdateGram的Update用法
  5. redux引用多个中间件_如何轻松创建您的第一个Redux中间件
  6. [常用命令]Git命令
  7. python获取网站window全局对象或方法的返回值
  8. 专业网站设计的实施步骤及有关疑难问题汇编
  9. 万字长文带你快速了解并上手Testcontainers
  10. DNF的SPK文件解析笔记
  11. 。三十功名尘与土,八千里路云和月。莫等闲,白了少年头,空悲切
  12. 亿万用户网站MySpace的成功秘密
  13. Linux解决txt文件乱码问题
  14. 百家号不收录限流无推荐阅读为零抄袭的解决方法!
  15. 电力电子技术笔记(7)——器件的保护
  16. unity3d 中能画出漂亮图案的函数之玫瑰图案
  17. 什么是数字化和数字化转型?
  18. spark中的cache()、persist()和checkpoint()的区别
  19. 物联网企业争抢「两轮车换电」赛道
  20. 输出所有的水仙花数(java语言编写)

热门文章

  1. 【Codeforces Round #507 (Div. 2, based on Olympiad of Metropolises) A】Palindrome Dance
  2. HTML5之Canvas基础
  3. 洛谷P3388 【模板】割点(割顶)
  4. cogs luogu 珠心算测试【noip2014 普及组】
  5. MVC 3 登录、注销
  6. (转)资料收集,新手必备的sql数据导入导出知识
  7. 利用OpenCV的库函数Sobel和Scharr作图像的边缘检测
  8. php如何在添加div的背景颜色_css3颜色渐变:css3如何实现背景颜色渐变?
  9. vc++ 显式链接dll
  10. java 日志脱敏框架 sensitive,优雅的打印脱敏日志