Jzoj3780 Magical GCD
给你一个序列s,求区间[l,r]使得gcd(s[l]~s[r])*(r-l+1)最大,输出这个最大值,n<=200000,cases<=20
显然,我们暴力是不可以过的,那么我们考虑一下的做法:
我们维护一个g数组,g[i]表示gcd(s[i]~s[r])
那么我们每次移动r指针,让后重新更新g数组,显然每个g[i]可以O(lg k)更新,但是这样的复杂度依然是n^2lgk
我们发现,对于g[i]=g[j]而且i<j,我们可以把j扔掉不管,这样的话可以将复杂度优化到nlgklgk
为什么?因为显然,g数组是单调的,而且g[i]|g[i+1],那么这就导致g[i+1]>=2*g[i],所以整个g数组长度不会超过lg k
#pragma GCC opitmize("O3")
#pragma G++ opitmize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define L long long
using namespace std;
inline L gcd(L a,L b){for(L c;b;a=b,b=c) c=a%b;return a;
}
struct Num{ int id; L x; } g[100];
int n,t=0; L A=0,x;
int F(){scanf("%d",&n); t=A=0;*g=(Num){0,0};for(int i=1,k;i<=n;++i){scanf("%lld",&x);g[++t]=(Num){i,x};for(int j=k=1;j<=t;++j){g[j].x=gcd(g[j].x,x); A=max(A,g[j].x*(i-g[j].id+1));if(g[j].x!=g[j-1].x) g[k++]=g[j];}t=--k;}printf("%lld\n",A);
}
int main(){int T; for(scanf("%d",&T);T--;F());
}
转载于:https://www.cnblogs.com/Extended-Ash/p/7774403.html
Jzoj3780 Magical GCD相关推荐
- Magical GCD
Description: 对于一个由正整数组成的序列, Magical GCD 是指一个区间的长度乘以该区间内所有数字的最大公约数.给你一个序列,求出这个序列最大的 Magical GCD. INPU ...
- UVA Magical GCD
Magical GCD 题意:给定一个数列,求一个子列,该子列的最大公约数乘上子列长度的值最大,输出最大值.数列的大小是100000,这些数的大小是1-10^12. 解题思路:一开始想的是用暴力,但数 ...
- UVa 1642 (综合) Magical GCD
题意: 给出一个数列,求一个连续的子序列,使得MGCD(i, j) = 该子序列的长度(j-i+1) × 子序列的gcd 最大,并输出这个最大值. 分析: 感觉可能要用优先队列,但貌似也用不上. 但 ...
- 【jzoj】2018.2.5NOIP普及组——C组模拟赛
前言 今天第一次正式C组题,不过--比较恐怖. 正题 题目1:公牛和母牛(jzoj1292) 有n头牛,可以是公牛或母牛,每头公牛之间至少得有k头母牛.求方案数. 输入输出(建议跳过) Input 第 ...
- problem solving automation
分工一定要明确啊啊啊啊啊 Nero 数据结构 图论 DP 博弈 JayYe 数论 DP 模拟搜索 博弈 wuyiqi 数论 数据结构 图论 字符串 模拟搜索 几何 20 ...
- 紫书《算法竞赛入门经典》
紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...
- 数论基础(附加例题)
A Colossal Fibonacci Numbers! (循环节) 题意:求fibonacci数列f(a^b)项mod n (0<a, ...
- 大视野上每道题的知识点
https://blog.csdn.net/BOYxiejunBOY/article/details/54773714 在大神基础上细化 1000:A+B 1001:平面图最小割,转对偶图最短路 10 ...
- 【业界偷懒】【Public】BZOJ题目一句话题解整理
转发[Hzwer]: 就当是复习一下自己做过的题,顺便提供一个简要题解给大家看. 做题时候实在想不出来看一下一句话题解,可以有一个提示的作用又不至于一下子知道了全部浪费了一道题吧.. 部分题目(如我A ...
- 【醒目】【业界偷懒】【Public】BZOJ题目一句话题解整理
就当是复习一下自己做过的题,顺便提供一个简要题解给大家看. 做题时候实在想不出来看一下一句话题解,可以有一个提示的作用又不至于一下子知道了全部浪费了一道题吧.. 部分题目(如我A过得大部分奶牛题)是别 ...
最新文章
- BeanUtils API中使用ConvertUtils向BeanUtils注册一个日期转换器
- MAT类如何存储数据
- Oracle常用语句记录
- IntelliJ IDEA 中,英官网 - 下载地址
- p1605迷宫(DFS应该注意的问题)
- (转载)python多行注释
- chrome开启touch屏幕点击事件
- C# MVC使用阿里云对象存储加快图片加载速度(一)
- 一个完整的html文件包含哪些标签,HTML基础有哪些单标签
- 1090 危险品装箱 (25分)
- 福建首个区块链赋能教育信息化项目上线
- 各个行业的前端静态页面模板
- AIS船舶自动识别系统原理
- 史上最详细嵌入式系统设计师修炼手册
- C#笔记——自动关机or定时关机小程序
- win10计算机管理中没有本地用户和组怎么办
- 英特尔服务器主板型号,支持英特尔® Server Board S2600JF
- note4x rom android p,红米Note4x安卓8.0刷机包
- SysML精粹学习笔记二
- daliu_IT学习Android笔记第一篇--Android是什么?安卓的logo来源?安卓的发展过程?