bzoj 4488: [Jsoi2015]最大公约数
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
30 60 20 20 20
Sample Output
//最佳子序列为最后 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]最大公约数相关推荐
- 【bzoj4488: [Jsoi2015]最大公约数】性质题
4488: [Jsoi2015]最大公约数 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 242 Solved: 141 [ Submit][ ...
- P5502 [JSOI2015]最大公约数(gcd性质/min性质/分治)
P5502 [JSOI2015]最大公约数 对于求解(r-l+1)*gcd(l,r)的最大值,首先我们有一个性质,就是一个前缀的gcd本质不同个数只有log个,所以我们可以利用这个性质,然后每次分治处 ...
- bzoj 4487: [Jsoi2015]染色问题
先贴一个题解吧,最近懒得要死2333,可能是太弱的原因吧,总是扒题解,(甚至连题解都看不懂了),blog也没更新,GG http://blog.csdn.net/werkeytom_ftd/artic ...
- BZOJ 4481 [Jsoi2015] 非诚勿扰
Description [故事背景] JYY赶上了互联网创业的大潮,为非常勿扰开发了最新的手机App实现单身 大龄青年之间的"速配".然而随着用户数量的增长,JYY发现现有速配的算 ...
- [暑假的bzoj刷水记录]
(这篇我就不信有网站来扣) 这个暑假打算刷刷题啥的 但是写博客好累啊 堆一起算了 隔一段更新一下. 7月27号之前刷的的就不写了 , 写的累 代码不贴了,可以找我要啊.. 2017.8.27upd ...
- ZJOI2019一轮停课刷题记录
Preface 菜鸡HL终于狗来了他的省选停课,这次的时间很长,暂定停到一试结束,不过有机会二试的话还是可以搞到4月了 这段时间的学习就变得量大而且杂了,一般以刷薄弱的知识点和补一些新的奇怪技巧为主. ...
- 退役前的做题记录1.0
退役前的做题记录1.0 租酥雨最近很懒qwq,具体表现在写题的时候不想发题解了. 但是想想这样也不太好,就决定发个一句话(半句话到几句话不等)题解上来. 2018-09.18-2018-09.28 [ ...
- 图论 公约数 找环和链 BZOJ [NOI2008 假面舞会]
BZOJ 1064: [Noi2008]假面舞会 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1655 Solved: 798 [Submit] ...
- BZOJ 2226 [Spoj 5971] LCMSum 最大公约数之和 | 数论
BZOJ 2226 [Spoj 5971] LCMSum 这道题和上一道题十分类似. \[\begin{align*} \sum_{i = 1}^{n}\operatorname{LCM}(i, n) ...
最新文章
- Mars说光场(4)— 光场显示
- 数据库收缩数据文件的尝试(二)(r11笔记第9天)
- 初心大陆-----python宝典之以外学习对比去重
- 实战案例丨小型企业如何从IPv4迁移至IPv6
- 计算机系统是连续系统,连续系统的计算机模拟
- python读取栅格gdal库下载链接
- HTML5 2D平台游戏开发#4状态机
- UE4分支的Git Flow
- powershell 模拟IE行为
- arm-linux-gnueabihf-gcc下载
- 农商行JAVA笔试题_银行笔试题
- python笔记:7.2.2.2 一元多因素方差分析_交互效应图(购房面积影响因素交互效应)
- Netplus里的基本概念
- 已知ip地址和其子网掩码如何求网络号子网号主机号
- ECAMScript6基础知识
- 从loss的硬截断、软化到Focal Loss
- 包载信使RNA(mRNA)的虫草多糖脂质体|冬虫夏草多糖脂质体包载小干扰RNA(siRNA)
- python错误类型翻译_17个新手常见的Python运行时错误
- Android集成银联支付
- hdu 2023 求平均成绩
热门文章
- Qt5.8 在windows下mingw静态编译
- Android之线程池深度剖析
- Goldengate 应用环境 mysql to oracle
- linux_一些shell命令分析记录
- [WP]关于WP7的后台的一些小事情
- Windows Phone 7 Image Controller: Zoom In, Zoom Out, and Rotate (WP 7 图像控制器:放大,缩小,旋转)...
- 深夜,你的手机为谁开?
- find到带空格文件名用xargs处理的技巧
- Putty自动登陆远程Linux主机
- 工作中用到的java反射机制_(转)JAVA-反射机制的使用