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

COCI2022-2023#1 Neboderi

P9032 [COCI2022-2023#1] Neboderi

题目大意

有一个长度为 n n n的序列 h i h_i hi,你需要从中选择一个长度大于等于 k k k的子区间 [ l , r ] [l,r] [l,r],使得 g × ( h l + h l + 1 + ⋯ + h r ) g\times (h_l+h_{l+1}+\cdots+h_r) g×(hl+hl+1++hr)最小,其中 g = gcd ⁡ ( h l , h l + 1 , … , h r ) g=\gcd(h_l,h_{l+1},\dots,h_r) g=gcd(hl,hl+1,,hr)

1 ≤ k ≤ n ≤ 1 0 6 , 1 ≤ h i ≤ 1 0 6 1\leq k\leq n\leq 10^6,1\leq h_i\leq 10^6 1kn106,1hi106


题解

当确定了 l l l时, gcd ⁡ ( h l , h l + 1 , … , h r ) \gcd(h_l,h_{l+1},\dots,h_r) gcd(hl,hl+1,,hr)随着 r r r的增大而减小。

每当 gcd ⁡ \gcd gcd减小时,其 gcd ⁡ \gcd gcd相对于原来的 gcd ⁡ \gcd gcd肯定有若干个质因数的次数减小。那么,对于一个确定的 l l l gcd ⁡ ( h l , h l + 1 , … , h r ) \gcd(h_l,h_{l+1},\dots,h_r) gcd(hl,hl+1,,hr)的取值不会超过 log ⁡ a l \log a_l logal个数。

先用 S T ST ST表维护区间 gcd ⁡ \gcd gcd。枚举 l l l,在二分每一段 g c d gcd gcd值相等的区间并取该区间的右端点作为 r r r来更新答案。

v v v a i a_i ai的最大值,则时间复杂度为 O ( n log ⁡ n log ⁡ v ) O(n\log n\log v) O(nlognlogv)

当然,这是跑不满的,而且时限为 2.50 s 2.50s 2.50s,所以可以过。


code

#include<iostream>
#include<cstdio>
using namespace std;
const int N=1000000;
int n,k,now,v[N+5],lg[N+5],f[N+5][20];
long long ans=0,sum[N+5];
int gcd(int i,int j){while(j){i%=j;swap(i,j);}return i;
}
int gt(int l,int r){int x=lg[r-l+1];return gcd(f[l][x],f[r-(1<<x)+1][x]);
}
int to(int w,int be,int hv){int l=be+1,r=n,mid;while(l<=r){mid=l+r>>1;if(gt(w,mid)>=hv) l=mid+1;else r=mid-1;}return l-1;
}
int main()
{scanf("%d%d",&n,&k);lg[0]=-1;for(int i=1;i<=n;i++){lg[i]=lg[i/2]+1;scanf("%d",&v[i]);sum[i]=sum[i-1]+v[i];f[i][0]=v[i];}for(int i=1;i<=19;i++){for(int j=1;j<=n-(1<<i-1);j++){f[j][i]=gcd(f[j][i-1],f[j+(1<<i-1)][i-1]);}}for(int l=1,r;l<=n-k+1;l++){now=gt(l,l+k-1);r=to(l,l+k-1,now);while(r<=n){ans=max(ans,gt(l,r)*(sum[r]-sum[l-1]));if(r==n) break;now=gt(l,r+1);r=to(l,r+1,now);}}printf("%lld",ans);return 0;
}

相关文章:

COCI2022-2023#1 Neboderi

P9032 [COCI2022-2023#1] Neboderi 题目大意 有一个长度为 n n n的序列 h i h_i hi​&#xff0c;你需要从中选择一个长度大于等于 k k k的子区间 [ l , r ] [l,r] [l,r]&#xff0c;使得 g ( h l h l 1 ⋯ h r ) g\times (h_lh_{l1}\cdotsh_r) g(hl​hl1​⋯hr​)最小&…...

由于找不到d3dx9_43.dll无法继续执行此代码怎么解决?全面解析d3dx9_43.dll

在使用计算机过程中&#xff0c;我们可能会遇到各种各样的问题。其中之一就是d3dx9_43.dll文件丢失的问题。这个问题通常会出现在运行某些应用程序或游戏时&#xff0c;导致程序无法正常启动或运行。那么&#xff0c;如何解决这个问题呢&#xff1f;小编将为您提供一些解决方案…...

Linux--网络编程-字节序

进程间的通信&#xff1a; 管道、消息队列、共享内存、信号、信号量。 特点&#xff1a;都依赖于linux内核。 缺陷&#xff1a;无法多机通信。 一、网络编程&#xff1a; 1、地址&#xff1a;基于网络&#xff0c;ip地址端口号。 端口号作用&#xff1a; 一台拥有ip地址的主机…...

python实现http/https拦截

python实现http拦截 前言:为什么要使用http拦截一、技术调研二、技术选择三、使用方法前言:为什么要使用http拦截 大多数爬虫玩家会直接选择API请求数据,但是有的网站需要解决扫码登录、Cookie校验、数字签名等,这种方法实现时间长,难度高。需求里面不需要高并发,有没有…...

农产品团购配送商城小程序的作用是什么

农产品覆盖稻麦油蛋等多种细分类目&#xff0c;各地区经营商家众多&#xff0c;随着人们生活品质提升&#xff0c;对食物的要求也在提升&#xff0c;绿色无污染无激素的农产品往往受到不少人喜爱&#xff0c;而在销售中&#xff0c;也有不少人选择自建商城线上经营。 通过【雨…...

使用van-dialog二次封装微信小程序模态框

由于微信小程序的wx.showModal不支持富文本内容&#xff0c;无法实现更灵活的展示效果&#xff0c;故需要进行二次封装 实现思路&#xff1a;使用van-dialog以及微信小程序的rich-text实现 代码如下&#xff1a; // index.wxml <van-dialoguse-slottitle"提示"s…...

生鲜蔬果同城配送社区团购小程序商城的作用是什么

生鲜蔬果行业作为市场主要支撑之一&#xff0c;从业商家众多的同时消费者也从不缺&#xff0c;尤其对中高城市&#xff0c;生鲜蔬果除了传统线下超市、市场经营外&#xff0c;线上更是受到大量消费者信任&#xff0c;而很多商家也是自建了生鲜蔬果商城多场景生意经营。 那么通…...

Unity实现设计模式——状态模式

Unity实现设计模式——状态模式 状态模式最核心的设计思路就是将对象的状态抽象出一个接口&#xff0c;然后根据它的不同状态封装其行为&#xff0c;这样就可以实现状态和行为的绑定&#xff0c;最终实现对象和状态的有效解耦。 在实际开发中一般用到FSM有限状态机的实现&…...

差分数组的应用技巧

前缀和技巧 针对的算法场景是不需要对原始数组进行修改的情况下&#xff0c;频繁查询某个区间的累加和。 差分数组 主要适用场景是频繁对原始数组的某个区间的元素进行增减。 相关题目 1094. 拼车 1109. 航班预订统计 370. 区间加法 # 1094. 拼车 class Solution:def carPool…...

斯坦福数据挖掘教程·第三版》读书笔记(英文版)Chapter 10 Mining Social-Network Graphs

来源&#xff1a;《斯坦福数据挖掘教程第三版》对应的公开英文书和PPT。 Chapter 10 Mining Social-Network Graphs The essential characteristics of a social network are: There is a collection of entities that participate in the network. Typically, these entiti…...

DFS:842. 排列数字

给定一个整数 nn&#xff0c;将数字 1∼n1∼n 排成一排&#xff0c;将会有很多种排列方法。 现在&#xff0c;请你按照字典序将所有的排列方法输出。 输入格式 共一行&#xff0c;包含一个整数 nn。 输出格式 按字典序输出所有排列方案&#xff0c;每个方案占一行。 数据…...

pytorch之nn.Conv1d详解

自然语言处理中一个句子序列&#xff0c;一维的&#xff0c;所以使用Conv1d...

H5生成二维码

H5生成二维码&#xff1a; 1.引入js库&#xff0c;可自行点击链接复制使用 <script type"text/javascript" src"http://static.runoob.com/assets/qrcode/qrcode.min.js"></script>2.加入二维码占位区HTML <div id"qrCode">…...

Three.js加载360全景图片/视频

Three.js加载360全景图片/视频 效果 原理 将全景图片/视频作为texture引入到three.js场景中将贴图与球形网格模型融合&#xff0c;将球模型当做成环境容器使用处理视频时需要以dom为载体&#xff0c;加载与控制视频动作每次渲染时更新当前texture&#xff0c;以达到视频播放效…...

北大硕士7年嵌入式学习经验分享

阶段 1 大一到大三这个阶段我与大多数学生相同&#xff1a; 学习本专业知识&#xff08;EE专业&#xff09;&#xff0c;学习嵌入式软件开发需要的计算机课程&#xff08;汇编原理&#xff0c;计算机组成原理&#xff0c;操作系统&#xff0c;C语言等&#xff09;&#xff0c…...

华为鸿蒙手表开发之动态生成二维码

华为鸿蒙手表开发之动态生成二维码 前言&#xff1a; 最近入职新公司&#xff0c;由于之前的哥们临时离职&#xff0c;走得很突然&#xff0c;所以没有任何交接和文档&#xff0c;临时顶上公司手表应用的上架&#xff0c;更换了新的密钥和key之后重新测试功能和流程&#xff…...

2023-09-28 monetdb-databae的概念和作用-分析

摘要: 每个数据库对于db,schema以及user,role都有一套自己的设计, 不同数据库间对于相同名字的东西例如database和schema可以说南辕北辙, 例如mysql中schema其实是database的同义词. 本文分析monetdb的database的概念和作用 database的概念和作用: 和mysql的database完全不同…...

2024级199管理类联考之数学基础(上篇)

管理类考试介绍 管理综合200分,时间3小时 数学&#xff1a;75分/25题,是拉开差距的核心模块 问题求解题&#xff1a;15个,5选一条件充分性判断&#xff1a;10个,结合两个条件选择答案 条件一充分,条件二不充分&#xff1a;A条件一不充分,条件二充分&#xff1a;B条件一充分,条…...

RFID技术引领汽车零部件加工新时代

RFID技术的兴起引领了汽车零部件加工领域的新时代&#xff0c;作为一种利用无线电频率进行自动识别的技术&#xff0c;RFID技术能够快速、准确地识别物体并获取相关数据&#xff0c;在汽车零部件加工中&#xff0c;RFID技术具有重要的应用价值&#xff0c;可以提高生产效率、降…...

python中使用matplotlib绘图

一、背景 当我们在写python程序时&#xff0c;不可避免的需要将数据可视化&#xff0c;也就是绘制出数据的曲线图&#xff0c;以便我们更直观的观察数据间的变化&#xff0c;和方便对比。此时就要用到matplotlib库了。 matplotlib官方给出的定义是&#xff1a; 翻译过来也就是…...

OpenClaw:重新定义 AI 智能体,从对话到执行的全能 “龙虾

在 AI 技术飞速迭代的今天&#xff0c;大语言模型已能流畅对话、生成内容&#xff0c;但多数仍停留在 “只说不做” 的层面。OpenClaw&#xff08;外号 “龙虾”&#xff09;的出现&#xff0c;打破了这一僵局 —— 它是一款由奥地利工程师 Peter Steinberger 主导开发&#xf…...

ISP中的AE(自动曝光)流程实现

深入理解ARM ISP中的AE&#xff08;自动曝光&#xff09;流程实现 概述 AE&#xff08;Auto Exposure&#xff0c;自动曝光&#xff09;是相机ISP&#xff08;Image Signal Processor&#xff09;中的核心算法之一&#xff0c;负责根据场景亮度自动调整曝光参数&#xff0c;确保…...

不止是画框!深入理解Cadence Allegro中Route Keepout与Route Keepin的实战区别

不止是画框&#xff01;深入理解Cadence Allegro中Route Keepout与Route Keepin的实战区别 在PCB设计领域&#xff0c;约束管理系统的精准运用往往决定着设计成败。对于使用Cadence Allegro的工程师而言&#xff0c;Route Keepout&#xff08;禁止布线区&#xff09;和Route Ke…...

React Native跨平台AI聊天应用开发实战:架构设计与性能优化

1. 项目概述&#xff1a;一个全功能的跨平台AI聊天伴侣如果你和我一样&#xff0c;既是移动端开发者&#xff0c;又是AI应用的深度用户&#xff0c;那么你肯定经历过这样的困境&#xff1a;想在手机上随时随地、流畅地和ChatGPT对话&#xff0c;却发现官方App要么功能受限&…...

Nitric常见问题解答:开发者最关心的25个问题汇总

Nitric常见问题解答&#xff1a;开发者最关心的25个问题汇总 【免费下载链接】nitric Nitric is a multi-language framework for cloud applications with infrastructure from code. 项目地址: https://gitcode.com/gh_mirrors/ni/nitric Nitric是一个多语言框架&…...

OpenClaw Memory启动器:快速构建AI记忆系统的开源脚手架

1. 项目概述&#xff1a;一个为AI记忆系统设计的开源启动器最近在折腾AI应用开发&#xff0c;特别是那些需要长期记忆和上下文管理的项目时&#xff0c;发现了一个挺有意思的GitHub仓库&#xff1a;christiancaviedes/openclaw-memory-starter。这本质上是一个为“OpenClaw Mem…...

管 Vibe Coding 项目,就像管公共厕所

本文整理自"AI炼金术"播客对徐文浩的访谈&#xff0c;探讨 AI 辅助编程&#xff08;Vibe Coding&#xff09;在组织落地后面临的治理挑战和应对策略。从"屎山三年一遇"到"屎山月月有"传统软件开发中&#xff0c;一个系统的"屎山化"通常…...

3步实战UE4SS游戏Mod开发:从零构建你的第一个LUA脚本系统

3步实战UE4SS游戏Mod开发&#xff1a;从零构建你的第一个LUA脚本系统 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE4S…...

GitHub加速终极指南:3步让你的下载速度提升10倍!

GitHub加速终极指南&#xff1a;3步让你的下载速度提升10倍&#xff01; 【免费下载链接】Fast-GitHub 国内Github下载很慢&#xff0c;用上了这个插件后&#xff0c;下载速度嗖嗖嗖的~&#xff01; 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 还在为Git…...

ClickHouse性能优化:OLAP数据库实战,让查询飞起来

**作者&#xff1a;洛水石** | **更新日期&#xff1a;2026-05-11** | **标签&#xff1a;ClickHouse | OLAP | 数据库优化 | 大数据**前言上个月&#xff0c;运营同学找我抱怨&#xff1a;每天凌晨的报表查询要等5分钟才能出来&#xff0c;数据量大的时候直接超时。作为DBA&am…...