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) ...
最新文章
- spring源码读书笔记(1)
- (八)cmockery中的calculator和run_tests函数的注释代码
- 功放音量调节原理_玩汽车音响,功放和喇叭,应该如何做好匹配?
- [BTS]BizTalk2006 SqlAdapter UpdateGram的Update用法
- redux引用多个中间件_如何轻松创建您的第一个Redux中间件
- [常用命令]Git命令
- python获取网站window全局对象或方法的返回值
- 专业网站设计的实施步骤及有关疑难问题汇编
- 万字长文带你快速了解并上手Testcontainers
- DNF的SPK文件解析笔记
- 。三十功名尘与土,八千里路云和月。莫等闲,白了少年头,空悲切
- 亿万用户网站MySpace的成功秘密
- Linux解决txt文件乱码问题
- 百家号不收录限流无推荐阅读为零抄袭的解决方法!
- 电力电子技术笔记(7)——器件的保护
- unity3d 中能画出漂亮图案的函数之玫瑰图案
- 什么是数字化和数字化转型?
- spark中的cache()、persist()和checkpoint()的区别
- 物联网企业争抢「两轮车换电」赛道
- 输出所有的水仙花数(java语言编写)
热门文章
- 【Codeforces Round #507 (Div. 2, based on Olympiad of Metropolises) A】Palindrome Dance
- HTML5之Canvas基础
- 洛谷P3388 【模板】割点(割顶)
- cogs luogu 珠心算测试【noip2014 普及组】
- MVC 3 登录、注销
- (转)资料收集,新手必备的sql数据导入导出知识
- 利用OpenCV的库函数Sobel和Scharr作图像的边缘检测
- php如何在添加div的背景颜色_css3颜色渐变:css3如何实现背景颜色渐变?
- vc++ 显式链接dll
- java 日志脱敏框架 sensitive,优雅的打印脱敏日志