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

求区间最大值

题目描述
给定一个长度为 N 的数列,和 M 次询问,求出每一次询问的区间内数字的最大值。
输入描述
第一行包含两个整数 N,M,分别表示数列的长度和询问的个数。
第二行包含 N 个整数(记为𝑎𝑖),依次表示数列的第 i 项。接下来 M 行,每行包含两个整数 
𝑙𝑖,𝑟𝑖,表示查询的区间为
[𝑙𝑖,𝑟𝑖]。
输出描述
输出包含 M 行,每行一个整数,依次表示每一次询问的结果。
提示
【数据范围】
1≤𝑁,𝑀≤105,0≤𝑎𝑖≤109
输入样例
8 8
9 3 1 7 5 6 0 8
1 6
1 5
2 7
2 6
1 8
4 8
3 7
1 8
输出样例
9
9
7
7
9
8
7
9

​
#include <iostream>
using namespace std;int f[100005][17];
int logn[100005];int main() {int n, m;cin >> n >> m;for (int i = 1; i <= n; i++)cin >> f[i][0];for (int j = 1; 1<<j <= n; j++)for (int i = 1; i+(1<<j)-1 <= n; i++)f[i][j] = max(f[i][j-1], f[i+(1<<(j-1))][j-1]);logn[1] = 0;for (int i = 2; i <= n; i++)logn[i] = logn[i/2] + 1;int l, r;for (int i = 0; i < m; i++) {scanf("%d %d", &l, &r);int x = logn[r-l+1];int mmax = max(f[l][x], f[r-(1<<x)+1][x]);printf("%d\n", mmax);}return 0;
}​

相关文章:

  • 从OCR瓶颈到结构化理解来有效提升RAG的效果
  • 趣味数据结构之——数组
  • spring07-JdbcTemplate操作数据库
  • JSON简介及其应用
  • Geollama 辅助笔记:raw_to_prompt_strings_geo.py
  • 编程江湖-左右互博术(多线程,多进程)
  • [Linux]信号入门
  • 【企业管理】利益分配
  • 《高等数学》(同济大学·第7版)第十章 重积分第三节三重积分
  • 科大讯飞2025AI开发者大赛-用户新增赛道时间规则解析
  • ARFoundation系列讲解 - 100 VisionPro 环境搭建
  • Swift Moya自定义插件打印日志
  • 磁悬浮轴承气隙设计深度解析:微米间的生死时速
  • 蚂蚁百宝箱体验:如何快速创建“旅游小助手”AI智能体
  • Eplan2022导入edz文件并插入使用
  • Java 使用 Easy Excel 进行 Excel 数据导入导出
  • Linux基本指令篇 —— less指令
  • GeoTools 结合 OpenLayers 实现属性查询
  • 阶段二开始-第一章—8天Python从入门到精通【itheima】-118节(继承)
  • 《红黑树实现》