洛谷U525322 优美区间

优美区间

题目描述

有一个长度为 n n n 的数字序列,序列的第 i i i 个数为 a i a_i ai

定义区间 [ l , r ] [l,r] [l,r] 的优美程度为 gcd ⁡ ( a l , a l + 1 , … , a r ) × ∑ i = l r a i \gcd(a_l,a_{l+1},\dots,a_r)\times\sum\limits_{i=l}^ra_i gcd(al,al+1,,ar)×i=lrai

你需要求出长度至少为 k k k 的区间的优美程度的最大值。

输入格式

第一行两个正整数 n , k n,k n,k

第二行 n n n 个正整数,第 i i i 个正整数为 a i a_i ai

输出格式

一行一个整数,表示答案。

样例 #1

样例输入 #1

7 2
2 1 5 4 4 4 2

样例输出 #1

48

提示

1 ≤ k ≤ n ≤ 1 0 6 1\le k\le n\le10^6 1kn106 1 ≤ a i ≤ 1 0 6 1\le a_i\le10^6 1ai106

注意到:对于一个 r r r,不同的 gcd ⁡ ( a l , a l + 1 , … , a r ) \gcd(a_l,a_{l+1},\dots,a_r) gcd(al,al+1,,ar) 至多只有 ⌊ log ⁡ a r ⌋ + 1 \lfloor\log a_r\rfloor+1 logar+1 种。

当我们对于一个 r = x r=x r=x 求出了所有不同的 gcd ⁡ ( a l , a l + 1 , … , a r ) \gcd(a_l,a_{l+1},\dots,a_r) gcd(al,al+1,,ar) 并找到了与之对应的最小的 l l l 后,要求出 r = x + 1 r=x+1 r=x+1 的情况。只需要在 l l l 的集合中插入 x + 1 x+1 x+1,并将对应的 gcd ⁡ \gcd gcd 相同的 l l l 只保留最小的即可。

于是对于每个 r r r,我们都可以求出所有不同的 gcd ⁡ ( a l , a l + 1 , … , a r ) \gcd(a_l,a_{l+1},\dots,a_r) gcd(al,al+1,,ar) 和与之对应的最小的 l l l,依次对这些区间中长度至少为 k k k 的区间计算优美程度,并取最大值即可。

时间复杂度为 Θ ( n log ⁡ 2 a ) \Theta(n\log^2 a) Θ(nlog2a),常数较小,可以通过本题。精细实现或使用科技可以做到 Θ ( n log ⁡ a ) \Theta(n\log a) Θ(nloga) 的复杂度。

暴力思路

常规暴力思路很容易想,但是拿不到满分。即遍历每一个可能的区间,同时计算gcd。
但是这样时间复杂度是 O ( n 2 log ⁡ a ) O(n^2 \log a) O(n2loga)级的。

#include <bits/stdc++.h>
#define endl '\n'
#define int long long
typedef long long ll;
using namespace std;
int a[1000005],p[1000005];
// int g[1000005];
signed main() {cin.tie(0)->ios::sync_with_stdio(0);int n,k;cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i];p[i]=a[i]+p[i-1];}   int ans = 0;for (int i = 1; i <= n - k + 1; i++) {int g = a[i];for (int j = i; j <= n; j++) {g = __gcd(g, a[j]);if (j - i + 1 >= k) {int sum = p[j] - p[i - 1];int tans = g * sum;ans = max(ans, tans);}}}cout << ans << endl;return 0;
}
AC代码:
#include <bits/stdc++.h>
#define endl '\n'
#define int long long
typedef long long ll;
using namespace std;
int a[1000005],p[1000005];
int g[1000005];  //存储左端点gcd
int pos[1000005]; //存储左端点位置
signed main() {cin.tie(0)->ios::sync_with_stdio(0);int n,k;cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i];  p[i]=a[i]+p[i-1]; // 前缀和}   int ans = 0;int cnt = 0;for (int i = 1; i <= n; i++) { // 枚举右端点ipos[++cnt]=i;  // 将右端点本身添加进左端点的集合中g[cnt]=a[i];int tcnt = cnt;cnt = 0;for (int j = 1; j <= tcnt; j++) {//枚举左端点jg[j]=__gcd(g[j],a[i]); // 每个左端点与a[i]gcdif(g[j]!=g[cnt]){  // 重新计数 保存每个gcd最小左端点信息pos[++cnt]=pos[j];g[cnt]=g[j];if ( i - pos[j] + 1 >= k) { // 长度满足条件就更新答案int sum = p[i] - p[pos[j]-1];int tans = g[j] * sum;ans = max(ans, tans);}}}}cout << ans << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/8826.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统安全及应用

一&#xff1a;账号安全控制 1.1 系统账号清理 1.1.1 将非登陆用户的Shell 设置为 /sbin/nologin (设置为这个解释器&#xff0c;禁止用户登陆&#xff09; [rootlocalhost ~]# usermod -s /sbin/nologin zhangsan #将用户zhangsan 的登录解释器 设置为 /sbin/n…

从源码深入理解One-API框架:适配器模式实现LLM接口对接

1. 概述 one-api 是一个开源的 API 框架&#xff0c;基于go语言开发&#xff0c;旨在提供统一的接口调用封装&#xff0c;支持多种 AI 服务平台的集成。通过 Gin 和 GORM 等框架&#xff0c;框架简化了多种 API 服务的调用流程。通过适配器模式实现了与多种 大模型API 服务的集…

[权限提升] 操作系统权限介绍

关注这个专栏的其他相关笔记&#xff1a;[内网安全] 内网渗透 - 学习手册-CSDN博客 权限提升简称提权&#xff0c;顾名思义就是提升自己在目标系统中的权限。现在的操作系统都是多用户操作系统&#xff0c;用户之间都有权限控制&#xff0c;我们通过 Web 漏洞拿到的 Web 进程的…

多模态论文笔记——ViViT

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细解读多模态论文《ViViT: A Video Vision Transformer》&#xff0c;2021由google 提出用于视频处理的视觉 Transformer 模型&#xff0c;在视频多模态领域有…

【深度之眼cs231n第七期】笔记(三十一)

目录 强化学习什么是强化学习&#xff1f;马尔可夫决策过程&#xff08;MDP&#xff09;Q-learning策略梯度SOTA深度强化学习 还剩一点小尾巴&#xff0c;还是把它写完吧。&#xff08;距离我写下前面那行字又过了好几个月了【咸鱼本鱼】&#xff09;&#xff08;汗颜&#xff…

[免费]基于Python的Django博客系统【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的基于Python的Django博客系统&#xff0c;分享下哈。 项目视频演示 【免费】基于Python的Django博客系统 Python毕业设计_哔哩哔哩_bilibili 项目介绍 随着互联网技术的飞速发展&#xff0c;信息的传播与…

【Docker】Docker入门了解

文章目录 Docker 的核心概念Docker 常用命令示例&#xff1a;构建一个简单的 C 应用容器1. 创建 C 应用2. 创建 Dockerfile3. 构建镜像4. 运行容器 Docker 优势学习 Docker 的下一步 **一、Docker 是什么&#xff1f;****为什么 C 开发者需要 Docker&#xff1f;** **二、核心概…

如何跨互联网adb连接到远程手机-蓝牙电话集中维护

如何跨互联网adb连接到远程手机-蓝牙电话集中维护 --ADB连接专题 一、前言 随便找一个手机&#xff0c;安装一个App并简单设置一下&#xff0c;就可以跨互联网的ADB连接到这个手机&#xff0c;从而远程操控这个手机做各种操作。你敢相信吗&#xff1f;而这正是本篇想要描述的…

基于java线程池和EasyExcel实现数据异步导入

基于java线程池和EasyExcel实现数据异步导入 2.代码实现 2.1 controller层 PostMapping("import")public void importExcel(MultipartFile file) throws IOException {importService.importExcelAsync(file);}2.2 service层 Resource private SalariesListener sa…

linux asio网络编程理论及实现

最近在B站看了恋恋风辰大佬的asio网络编程&#xff0c;质量非常高。在本章中将对ASIO异步网络编程的整体及一些实现细节进行完整的梳理&#xff0c;用于复习与分享。大佬的博客&#xff1a;恋恋风辰官方博客 Preactor/Reactor模式 在网络编程中&#xff0c;通常根据事件处理的触…

Python爬虫学习第三弹 —— Xpath 页面解析 实现无广百·度

早上好啊&#xff0c;大佬们。上回使用 Beautiful Soup 进行页面解析的内容是不是已经理解得十分透彻了~ 这回我们再来尝试使用另外一种页面解析&#xff0c;来重构上一期里写的那些代码。 讲完Xpath之后&#xff0c;小白兔会带大家解决上期里百度搜索的代码编写&#xff0c;保…

docker安装MySQL8:docker离线安装MySQL、docker在线安装MySQL、MySQL镜像下载、MySQL配置、MySQL命令

一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令 docker pull mysql:8.0.41 2、离线包下载 两种方式&#xff1a; 方式一&#xff1a; -&#xff09;在一台能连外网的linux上安装docker执行第一步的命令下载镜像 -&#xff09;导出 # 导出镜…

特权模式docker逃逸

目录 1.环境 2.上线哥斯拉 3.特权模式逃逸 1.判断是否为docker环境 2.判断是否为特权模式 3.挂载宿主机磁盘到docker 4.计划任务反弹shell 1.环境 ubuntu部署一个存在CVE-2017-12615的docker: (ip:192.168.117.147) kali(ip:192.168.117.128) 哥斯拉 2.上线哥斯拉…

Direct2D 极速教程(1) —— 画图形

极速导航 Direct2D 简介创建新项目&#xff1a;001-DrawGraphics弄一个白窗口在窗口上画图 Direct2D 简介 大家在学 WINAPI 的时候的时候有没有想过&#xff0c;怎么在一副窗口上画图呢&#xff1f;大家知道 Windows 系统是 GUI 图形用户界面 系统&#xff0c;以 Graphics 图形…

(长期更新)《零基础入门 ArcGIS(ArcScene) 》实验七----城市三维建模与分析(超超超详细!!!)

城市三维建模与分析 三维城市模型已经成为一种非常普遍的地理空间数据资源,成为城市的必需品,对城市能化管理至关重要。语义信息丰富的三维城市模型可以有效实现不同领域数据与IS相信息的高层次集成及互操作,从而在城市规划、环境模拟、应急响应和辅助决策等众多领域公挥作用、…

ArcGIS10.2 许可License点击始终启动无响应的解决办法及正常启动的前提

1、问题描述 在ArcGIS License Administrator中&#xff0c;手动点击“启动”无响应&#xff1b;且在计算机管理-服务中&#xff0c;无ArcGIS License 或者License的启动、停止、禁止等均为灰色&#xff0c;无法操作。 2、解决方法 ①通过cmd对service.txt进行手动服务的启动…

目标跟踪之sort算法(3)

这里写目录标题 1 流程1 预处理2 跟踪 2 代码 参考&#xff1a;sort代码 https://github.com/abewley/sort 1 流程 1 预处理 1.1 获取离线检测数据。1.2 实例化跟踪器。2 跟踪 2.1 轨迹处理。根据上一帧的轨迹预测当前帧的轨迹&#xff0c;剔除到当前轨迹中为空的轨迹得到当前…

物业巡更系统在现代社区管理中的优势与应用探讨

内容概要 在现代社区管理中&#xff0c;物业巡更系统正逐渐成为一种不可或缺的工具。结合先进的智能技术&#xff0c;这些系统能够有效地提升社区管理的各个方面&#xff0c;尤其是在巡检效率和信息透明度方面。通过实时记录巡检数据&#xff0c;物业管理人员能够确保工作人员…

深入探讨防抖函数中的 this 上下文

深入剖析防抖函数中的 this 上下文 最近我在研究防抖函数实现的时候&#xff0c;发现一个耗费脑子的问题&#xff0c;出现了令我困惑的问题。接下来&#xff0c;我将通过代码示例&#xff0c;深入探究这些现象背后的原理。 示例代码 function debounce(fn, delay) {let time…

进程通讯——类型和发展

进程常用交互方法如上