当前位置: 首页 > news >正文

Bzoj4488 [Jsoi2015]最大公约数

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 172  Solved: 101

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

 扫描 水题

又到了水题时间~

序列的gcd收敛得很快,好像有结论说不同的gcd不会超过log(序列长度)个

用map存一下当前存在的gcd最早在哪里出现,扫描一遍序列统计答案即可。

如果那个结论正确,复杂度大概是$ O(n log^2 n) $ (map自带一个log)

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cmath>
 5 #include<cstring>
 6 #include<map>
 7 #define LL long long
 8 using namespace std;
 9 const int mxn=100010;
10 LL read(){
11     LL x=0,f=1;char ch=getchar();
12     while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();}
13     while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}
14     return x*f;
15 }
16 LL gcd(LL a,LL b){return b?gcd(b,a%b):a;}
17 map<LL,int>mp,tmp;
18 map<LL,int>::iterator it;
19 int n;
20 LL a[mxn];
21 int main(){
22 //    freopen("in.txt","r",stdin);
23     int i,j;
24     n=read();
25     LL ans=0;
26     for(i=1;i<=n;i++){
27         a[i]=read();ans=max(ans,a[i]);
28         for(it=mp.begin();it!=mp.end();it++){
29             LL g=gcd((*it).first,a[i]);
30             ans=max(ans,g*(i-(*it).second+1));
31             if(!tmp.count(g))tmp[g]=(*it).second;
32             else tmp[g]=min(tmp[g],(*it).second);
33         }
34         if(!tmp.count(a[i]))tmp[a[i]]=i;
35         mp=tmp;
36         tmp.clear();
37     }
38     printf("%lld\n",ans);
39     return 0;
40 }

 

 

转载于:https://www.cnblogs.com/SilverNebula/p/6926060.html

相关文章:

  • 开源 java CMS - FreeCMS2.6 会员管理
  • C#下RSA算法的实现(适用于支付宝和易宝支付)
  • 监控与管理dubbo服务
  • OC中的@的作用研究
  • Haskell:什么时候该注释,什么时候不该注释
  • DeepMind 开源 Sonnet:在 TensorFlow 中快速构建神经网络
  • 【转载】使用缓存的9大误区(下)
  • 工作脚本处理文本
  • mysql5.6之 传输表空间迁移表或恢复误删除的表
  • MySQL 创建数据库及数据表
  • ThinkPHP 数据库操作之数据表模型和基础模型 ( Model )
  • 中国技术力量:ChinaTech Day 亮相 QCon 旧金山
  • 解决防火墙限制远程连接MySQL(导致错误10060可能之一)
  • storm-安装
  • [译]优秀的程序员不会觉得累成狗是一种荣耀
  • SegmentFault for Android 3.0 发布
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【css3】浏览器内核及其兼容性
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【剑指offer】让抽象问题具体化
  • 2017届校招提前批面试回顾
  • Angular Elements 及其运作原理
  • Consul Config 使用Git做版本控制的实现
  • JavaScript DOM 10 - 滚动
  • Javascript编码规范
  • JSDuck 与 AngularJS 融合技巧
  • Leetcode 27 Remove Element
  • Magento 1.x 中文订单打印乱码
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 码农张的Bug人生 - 见面之礼
  • 再谈express与koa的对比
  • 白色的风信子
  • 2017年360最后一道编程题
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 如何正确理解,内页权重高于首页?
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​批处理文件中的errorlevel用法
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #android不同版本废弃api,新api。
  • #include
  • $.ajax,axios,fetch三种ajax请求的区别
  • (4)(4.6) Triducer
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (pytorch进阶之路)扩散概率模型
  • (安卓)跳转应用市场APP详情页的方式
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (黑马C++)L06 重载与继承
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (幽默漫画)有个程序员老公,是怎样的体验?