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. Mars说光场(4)— 光场显示
  2. 数据库收缩数据文件的尝试(二)(r11笔记第9天)
  3. 初心大陆-----python宝典之以外学习对比去重
  4. 实战案例丨小型企业如何从IPv4迁移至IPv6
  5. 计算机系统是连续系统,连续系统的计算机模拟
  6. python读取栅格gdal库下载链接
  7. HTML5 2D平台游戏开发#4状态机
  8. UE4分支的Git Flow
  9. powershell 模拟IE行为
  10. arm-linux-gnueabihf-gcc下载
  11. 农商行JAVA笔试题_银行笔试题
  12. python笔记:7.2.2.2 一元多因素方差分析_交互效应图(购房面积影响因素交互效应)
  13. Netplus里的基本概念
  14. 已知ip地址和其子网掩码如何求网络号子网号主机号
  15. ECAMScript6基础知识
  16. 从loss的硬截断、软化到Focal Loss
  17. 包载信使RNA(mRNA)的虫草多糖脂质体|冬虫夏草多糖脂质体包载小干扰RNA(siRNA)
  18. python错误类型翻译_17个新手常见的Python运行时错误
  19. Android集成银联支付
  20. hdu 2023 求平均成绩

热门文章

  1. Qt5.8 在windows下mingw静态编译
  2. Android之线程池深度剖析
  3. Goldengate 应用环境 mysql to oracle
  4. linux_一些shell命令分析记录
  5. [WP]关于WP7的后台的一些小事情
  6. Windows Phone 7 Image Controller: Zoom In, Zoom Out, and Rotate (WP 7 图像控制器:放大,缩小,旋转)...
  7. 深夜,你的手机为谁开?
  8. find到带空格文件名用xargs处理的技巧
  9. Putty自动登陆远程Linux主机
  10. 工作中用到的java反射机制_(转)JAVA-反射机制的使用