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 1≤k≤n≤106,1≤hi≤106
题解
当确定了 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,你需要从中选择一个长度大于等于 k k k的子区间 [ l , r ] [l,r] [l,r],使得 g ( h l h l 1 ⋯ h r ) g\times (h_lh_{l1}\cdotsh_r) g(hlhl1⋯hr)最小&…...
由于找不到d3dx9_43.dll无法继续执行此代码怎么解决?全面解析d3dx9_43.dll
在使用计算机过程中,我们可能会遇到各种各样的问题。其中之一就是d3dx9_43.dll文件丢失的问题。这个问题通常会出现在运行某些应用程序或游戏时,导致程序无法正常启动或运行。那么,如何解决这个问题呢?小编将为您提供一些解决方案…...
Linux--网络编程-字节序
进程间的通信: 管道、消息队列、共享内存、信号、信号量。 特点:都依赖于linux内核。 缺陷:无法多机通信。 一、网络编程: 1、地址:基于网络,ip地址端口号。 端口号作用: 一台拥有ip地址的主机…...
python实现http/https拦截
python实现http拦截 前言:为什么要使用http拦截一、技术调研二、技术选择三、使用方法前言:为什么要使用http拦截 大多数爬虫玩家会直接选择API请求数据,但是有的网站需要解决扫码登录、Cookie校验、数字签名等,这种方法实现时间长,难度高。需求里面不需要高并发,有没有…...
农产品团购配送商城小程序的作用是什么
农产品覆盖稻麦油蛋等多种细分类目,各地区经营商家众多,随着人们生活品质提升,对食物的要求也在提升,绿色无污染无激素的农产品往往受到不少人喜爱,而在销售中,也有不少人选择自建商城线上经营。 通过【雨…...
使用van-dialog二次封装微信小程序模态框
由于微信小程序的wx.showModal不支持富文本内容,无法实现更灵活的展示效果,故需要进行二次封装 实现思路:使用van-dialog以及微信小程序的rich-text实现 代码如下: // index.wxml <van-dialoguse-slottitle"提示"s…...
生鲜蔬果同城配送社区团购小程序商城的作用是什么
生鲜蔬果行业作为市场主要支撑之一,从业商家众多的同时消费者也从不缺,尤其对中高城市,生鲜蔬果除了传统线下超市、市场经营外,线上更是受到大量消费者信任,而很多商家也是自建了生鲜蔬果商城多场景生意经营。 那么通…...
Unity实现设计模式——状态模式
Unity实现设计模式——状态模式 状态模式最核心的设计思路就是将对象的状态抽象出一个接口,然后根据它的不同状态封装其行为,这样就可以实现状态和行为的绑定,最终实现对象和状态的有效解耦。 在实际开发中一般用到FSM有限状态机的实现&…...
差分数组的应用技巧
前缀和技巧 针对的算法场景是不需要对原始数组进行修改的情况下,频繁查询某个区间的累加和。 差分数组 主要适用场景是频繁对原始数组的某个区间的元素进行增减。 相关题目 1094. 拼车 1109. 航班预订统计 370. 区间加法 # 1094. 拼车 class Solution:def carPool…...
斯坦福数据挖掘教程·第三版》读书笔记(英文版)Chapter 10 Mining Social-Network Graphs
来源:《斯坦福数据挖掘教程第三版》对应的公开英文书和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,将数字 1∼n1∼n 排成一排,将会有很多种排列方法。 现在,请你按照字典序将所有的排列方法输出。 输入格式 共一行,包含一个整数 nn。 输出格式 按字典序输出所有排列方案,每个方案占一行。 数据…...
pytorch之nn.Conv1d详解
自然语言处理中一个句子序列,一维的,所以使用Conv1d...
H5生成二维码
H5生成二维码: 1.引入js库,可自行点击链接复制使用 <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场景中将贴图与球形网格模型融合,将球模型当做成环境容器使用处理视频时需要以dom为载体,加载与控制视频动作每次渲染时更新当前texture,以达到视频播放效…...
北大硕士7年嵌入式学习经验分享
阶段 1 大一到大三这个阶段我与大多数学生相同: 学习本专业知识(EE专业),学习嵌入式软件开发需要的计算机课程(汇编原理,计算机组成原理,操作系统,C语言等),…...
华为鸿蒙手表开发之动态生成二维码
华为鸿蒙手表开发之动态生成二维码 前言: 最近入职新公司,由于之前的哥们临时离职,走得很突然,所以没有任何交接和文档,临时顶上公司手表应用的上架,更换了新的密钥和key之后重新测试功能和流程ÿ…...
2023-09-28 monetdb-databae的概念和作用-分析
摘要: 每个数据库对于db,schema以及user,role都有一套自己的设计, 不同数据库间对于相同名字的东西例如database和schema可以说南辕北辙, 例如mysql中schema其实是database的同义词. 本文分析monetdb的database的概念和作用 database的概念和作用: 和mysql的database完全不同…...
2024级199管理类联考之数学基础(上篇)
管理类考试介绍 管理综合200分,时间3小时 数学:75分/25题,是拉开差距的核心模块 问题求解题:15个,5选一条件充分性判断:10个,结合两个条件选择答案 条件一充分,条件二不充分:A条件一不充分,条件二充分:B条件一充分,条…...
RFID技术引领汽车零部件加工新时代
RFID技术的兴起引领了汽车零部件加工领域的新时代,作为一种利用无线电频率进行自动识别的技术,RFID技术能够快速、准确地识别物体并获取相关数据,在汽车零部件加工中,RFID技术具有重要的应用价值,可以提高生产效率、降…...
python中使用matplotlib绘图
一、背景 当我们在写python程序时,不可避免的需要将数据可视化,也就是绘制出数据的曲线图,以便我们更直观的观察数据间的变化,和方便对比。此时就要用到matplotlib库了。 matplotlib官方给出的定义是: 翻译过来也就是…...
OpenClaw:重新定义 AI 智能体,从对话到执行的全能 “龙虾
在 AI 技术飞速迭代的今天,大语言模型已能流畅对话、生成内容,但多数仍停留在 “只说不做” 的层面。OpenClaw(外号 “龙虾”)的出现,打破了这一僵局 —— 它是一款由奥地利工程师 Peter Steinberger 主导开发…...
ISP中的AE(自动曝光)流程实现
深入理解ARM ISP中的AE(自动曝光)流程实现 概述 AE(Auto Exposure,自动曝光)是相机ISP(Image Signal Processor)中的核心算法之一,负责根据场景亮度自动调整曝光参数,确保…...
不止是画框!深入理解Cadence Allegro中Route Keepout与Route Keepin的实战区别
不止是画框!深入理解Cadence Allegro中Route Keepout与Route Keepin的实战区别 在PCB设计领域,约束管理系统的精准运用往往决定着设计成败。对于使用Cadence Allegro的工程师而言,Route Keepout(禁止布线区)和Route Ke…...
React Native跨平台AI聊天应用开发实战:架构设计与性能优化
1. 项目概述:一个全功能的跨平台AI聊天伴侣如果你和我一样,既是移动端开发者,又是AI应用的深度用户,那么你肯定经历过这样的困境:想在手机上随时随地、流畅地和ChatGPT对话,却发现官方App要么功能受限&…...
Nitric常见问题解答:开发者最关心的25个问题汇总
Nitric常见问题解答:开发者最关心的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. 项目概述:一个为AI记忆系统设计的开源启动器最近在折腾AI应用开发,特别是那些需要长期记忆和上下文管理的项目时,发现了一个挺有意思的GitHub仓库:christiancaviedes/openclaw-memory-starter。这本质上是一个为“OpenClaw Mem…...
管 Vibe Coding 项目,就像管公共厕所
本文整理自"AI炼金术"播客对徐文浩的访谈,探讨 AI 辅助编程(Vibe Coding)在组织落地后面临的治理挑战和应对策略。从"屎山三年一遇"到"屎山月月有"传统软件开发中,一个系统的"屎山化"通常…...
3步实战UE4SS游戏Mod开发:从零构建你的第一个LUA脚本系统
3步实战UE4SS游戏Mod开发:从零构建你的第一个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加速终极指南:3步让你的下载速度提升10倍! 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 还在为Git…...
ClickHouse性能优化:OLAP数据库实战,让查询飞起来
**作者:洛水石** | **更新日期:2026-05-11** | **标签:ClickHouse | OLAP | 数据库优化 | 大数据**前言上个月,运营同学找我抱怨:每天凌晨的报表查询要等5分钟才能出来,数据量大的时候直接超时。作为DBA&am…...
