【模板】静态区间最值【牛客tracker 每日一题】

【模板】静态区间最值

时间限制:5秒 空间限制:1024M

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

对于给定的长度为n nn的数组 {a 1 , a 2 , … , a n a_1,a_2,…,a_na1,a2,,an} ,你需要构建一个能够维护区间最大/最小值信息的数据结构,使得其能支持:

  1. 区间最小值查询:输出[ l , r ] [l,r][l,r]这个区间中的最小元素,即m i n ⁡ min⁡min{a l , a l + 1 , … , a r a_l,a_{l+1},…,a_ral,al+1,,ar} ;
  2. 区间最大值查询:输出[ l , r ] [l,r][l,r]这个区间中的最大元素,即m a x maxmax⁡{a l , a l + 1 , … , a r a_l,a_{l+1},…,a_ral,al+1,,ar} 。

提示本题为『离线 ‖ 静态:仅询问 ‖区间最值』模板题,我们可以使用S T STST表解决,预期实现时间复杂度为O ( n l o g ⁡ n ) O(nlog⁡n)O(nlogn)。您也可以尝试使用已知的O ( n ) O(n)O(n)复杂度做法通过本题。

输入描述:

第一行输入两个整数n , q ( 1 ≦ n , q ≦ 5 × 1 0 5 ) n,q(1≦n,q≦5×10^5)n,q(1n,q5×105)代表数组中的元素数量、操作次数。
第二行输入n nn个整数a 1 , a 2 , … , a n ( − 1 0 9 ≦ a i ≦ 1 0 9 ) a_1,a_2,…,a_n(−10^9≦a_i≦10^9)a1,a2,,an(109ai109)代表初始数组。
此后q qq行,每行先输入一个整数o p ( 1 ≦ o p ≦ 2 ) op(1≦op≦2)op(1op2)代表操作编号,随后:

输出描述:

对于每一次询问,输出一行一个整数代表区间最值。

示例1

输入:

6 4 1 1 4 5 1 4 1 1 1 1 3 4 2 4 4 2 1 6

输出:

1 4 5 5

说明:

对于第一次操作,查询1 , 1 , 4 , 5 , 1 , 4 {1,1,4,5,1,4}1,1,4,5,1,4(单点查询)最小值,答案输出1 11
对于第二次操作,查询1 , 1 , 4 , 5 , 1 , 4 {1,1,4,5,1,4}1,1,4,5,1,4最小值,答案输出4 44
对于第三次操作,查询1 , 1 , 4 , 5 , 1 , 4 {1,1,4,5,1,4}1,1,4,5,1,4(单点查询)最大值,答案输出5 55
对于第四次操作,查询1 , 1 , 4 , 5 , 1 , 4 {1,1,4,5,1,4}1,1,4,5,1,4(全局查询)最大值,答案输出5 55

解题思路

采用S T STST表(稀疏表)解决静态区间最值查询问题,首先预处理对数数组L o g LogLog(通过递推快速得到每个数的二进制对数,避免查询时重复计算),再构建两个S T STSTs t m i n st_{min}stmins t m a x st_{max}stmax,其中s t m i n [ i ] [ j ] st_{min}[i][j]stmin[i][j]表示从i ii开始长度为2 j 2^j2j的区间最小值,s t m a x [ i ] [ j ] st_{max}[i][j]stmax[i][j]表示对应区间最大值,通过递推式由j − 1 j-1j1层的子区间最值合并得到j层的最值;对于每次查询,计算区间长度的对数k kk,将查询区间拆分为两个长度为2 k 2^k2k的重叠子区间,取其最值作为结果(最小值查询取两个子区间最小值的较小者,最大值查询取较大者);该方法预处理时间复杂度为O ( n l o g n ) O(nlogn)O(nlogn),单次查询时间复杂度为O ( 1 ) O(1)O(1),适配n nnq qq5 e 5 5e55e5的大规模输入,高效精准输出每个区间的最值。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefpair<ll,ll>pii;constll p=1e9+7;constll N=5e5+10;constll M=20;ll st_min[N][M];ll st_max[N][M];ll Log[N],arr[N];ll n,q;voidinit_log(){Log[1]=0;for(ll i=2;i<=n;i++)Log[i]=Log[i/2]+1;}voidbuild_st(){for(ll i=1;i<=n;i++){st_min[i][0]=arr[i];st_max[i][0]=arr[i];}for(ll j=1;j<M;j++)for(ll i=1;i+(1<<j)-1<=n;i++){st_min[i][j]=min(st_min[i][j-1],st_min[i+(1<<(j-1))][j-1]);st_max[i][j]=max(st_max[i][j-1],st_max[i+(1<<(j-1))][j-1]);}}llquery_min(ll l,ll r){ll k=Log[r-l+1];returnmin(st_min[l][k],st_min[r-(1<<k)+1][k]);}llquery_max(ll l,ll r){ll k=Log[r-l+1];returnmax(st_max[l][k],st_max[r-(1<<k)+1][k]);}intmain(){if(!(cin>>n>>q))return0;for(ll i=1;i<=n;i++)cin>>arr[i];init_log();build_st();ll op,l,r;while(q--){cin>>op>>l>>r;if(op==1)cout<<query_min(l,r)<<endl;elsecout<<query_max(l,r)<<endl;}return0;}

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

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

相关文章

Ascend C 与 CUDA 的对比分析-为异构计算开发者提供迁移指南

目录 &#x1f3af; 摘要 1. 架构哲学&#xff1a;两种不同的AI计算世界观 1.1 &#x1f504; 从"通用加速"到"AI原生"的范式转移 1.2 &#x1f3d7;️ 硬件架构的本质差异 2. 编程模型对比&#xff1a;从线程到任务块的范式革命 2.1 ⚙️ CUDA的线程…

CF1004D Sonya and Matrix - crazy-

思维,构造 题解 已知一个无限大的矩阵,其中每个格子的值表示其距离矩阵中心的曼哈顿距离。 如图是矩阵的一部分:现在另一个矩阵,已知矩阵中全部的 \(t\) 个数,试在无限大的矩阵中截取出 \(n\times m =t\) 大小的矩…

Markdown编辑完全指南

一、Markdown基础知识 1.1 什么是Markdown Markdown是一种轻量级标记语言&#xff0c;使用纯文本格式编写文档。【优点】&#xff1a; ✓ 纯文本&#xff0c;兼容性好 ✓ 语法简单&#xff0c;易学易用 ✓ 专注内容&#xff0c;不被格式干扰 ✓ 版本控制友好&#xff08;Git等…

DAY37 早停策略和模型权重的保存

浙大疏锦行 import torch import torch.nn as nn import torch.optim as optim from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split import numpy as npirisload_iris() Xiris.data yiris.targetX_train,X_test,y_train,y_testtra…

西门子1200 PLC自由口通讯CRC校验程序实战

西门子1200plc自由口通讯CRC校验程序。 该CRC校验程序校验出来的校验码为modbus RTU协议报文最后的校验码。用于没有modbus RTU指令且没有CRC校验指令的plc&#xff0c;只能用自由口指令来实现modbus RTU通讯协议的情况。 该程序已经实测&#xff0c;功能包好。在自动化控制领域…

【求解释】智子递归架构:基于互补递归与河洛调控的智能系统框架

智子递归架构&#xff1a;基于互补递归与河洛调控的智能系统框架——简化符号、清晰表述与数学实现研究者&#xff1a;桑干河报告版本&#xff1a;1.0发布日期&#xff1a;2023年10月---摘要智子递归架构是一种基于二值递归单元&#xff08;智子&#xff09;、互补对称性与全局…

Node.js `import.meta` 深入全面讲解

import.meta 是 ES 模块&#xff08;ESM&#xff09;特有的元数据对象&#xff0c;提供当前模块的上下文信息&#xff0c;是 ES 标准的一部分&#xff08;ES2020 引入&#xff09;&#xff0c;Node.js 从 v12.2.0 开始支持&#xff08;需启用 ESM&#xff0c;v14.13.0 及以上无…

教程8:结构体的添加和使用-–-behaviac

原文 本文档描述的是3.6及以后版本&#xff0c;对于3.5及以前的老版本请参考分类“3.5”。对于结构体类型的使用&#xff0c;包括新增全新的结构体和扩展使用已有的结构体。对于新增的结构体&#xff0c;又包括编辑器是否自动生成该结构体的代码。 实际上&#xff0c;我们将新…

影刀RPA发货大杀器!亚马逊订单批量发货效率提升2000%,告别手动煎熬![特殊字符]

影刀RPA发货大杀器&#xff01;亚马逊订单批量发货效率提升2000%&#xff0c;告别手动煎熬&#xff01;&#x1f680;每天处理几百个亚马逊订单发货到手软&#xff1f;复制粘贴物流单号到怀疑人生&#xff1f;别硬扛了&#xff01;今天我用影刀RPA打造智能发货机器人&#xff0…

CF1009F Dominant Indices - crazy-

dsu-on-tree,双端队列 题意 给定一棵有 \(n\) 个顶点的有根树,以顶点 \(1\) 作为根。 定义顶点 \(x\) 的深度数组为一个无限序列 \([d_{x, 0}, d_{x, 1}, d_{x, 2}, \dots]\),其中 \(d_{x, i}\) 表示满足以下两个条件…

蓄电池与超级电容器混合储能并网的Simulink仿真探索

蓄电池与超级电容器混合储能并网 Matlab/Simulink仿真模型&#xff0c;波形正确。 1.混合储能并网&#xff0c;能量管理&#xff0c;蓄电池与超级电容混合储能并网&#xff0c;混合储能采用低通滤波器进行功率分配&#xff0c;有效抑制系统功率波动&#xff0c;实现母线电压稳定…

macOS 的两款好用的免费截图软件: shottr 和 snipaste

snipaste https://www.snipaste.com/ shottr https://shottr.cc/ 也有免费版本 好友版本更多更丰富的功能。

教程9:枚举的添加和使用-–-behaviac

原文 本文档描述的是3.6及以后版本&#xff0c;对于3.5及以前的老版本请参考分类“3.5”。对于枚举类型的使用&#xff0c;包括新增全新的枚举和扩展使用已有的枚举。对于新增的枚举&#xff0c;又包括编辑器是否自动生成该枚举的代码。 实际上&#xff0c;我们将新增枚举&am…

QSharedMemory 变量在对象析构的时候要怎么处理

在Qt中使用QSharedMemory时&#xff0c;对象析构时的正确处理至关重要&#xff0c;主要涉及共享内存的释放和跨进程同步问题。以下是关键处理原则和步骤&#xff1a; 1. 自动析构行为&#xff08;Qt内置机制&#xff09; 自动detach()&#xff1a;当QSharedMemory对象销毁时&…

TikTok达人合作订单太繁琐?影刀RPA一键智能处理,效率飙升10倍![特殊字符]

TikTok达人合作订单太繁琐&#xff1f;影刀RPA一键智能处理&#xff0c;效率飙升10倍&#xff01;&#x1f680;作为影刀RPA的资深布道者&#xff0c;我深知MCN机构在达人订单管理上的"手忙脚乱"。今天&#xff0c;就带你用RPA技术打造达人合作"智能中台"&…

投机推理原理及设计

投机推理的核心思想是所谓的“草稿-验证”范式:快速生成多个草稿token,然后利用大语言模型的并行计算性一次验证所有草稿token,并决定接受多少token。例如,我们利用一个只有1B的小模型快速生成了8个草稿token draf…

前端保存用户登录信息 深入全面讲解

前端保存用户登录信息的核心目标是持久化登录状态&#xff08;减少重复登录&#xff09;、提升用户体验&#xff0c;同时必须兼顾安全性&#xff08;防止信息泄露、伪造、劫持&#xff09;。本文从存储方案选型、安全防护、最佳实践、常见问题等维度&#xff0c;全面解析前端登…

影刀RPA颠覆传统!TikTok售后工单智能处理,效率提升500%[特殊字符]

影刀RPA颠覆传统&#xff01;TikTok售后工单智能处理&#xff0c;效率提升500%&#x1f680;每天被海量TikTok售后工单淹没&#xff1f;重复复制粘贴到凌晨&#xff1f;别慌&#xff01;今天我用影刀RPA打造智能工单处理机器人&#xff0c;让你从此告别加班&#xff0c;体验什么…

【开题答辩全过程】以 基于PHP的乐高学习网站管理系统的设计实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

【Java毕设全套源码+文档】基于springboot的高校大学生心理咨询管理系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…