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

洛谷 P2880 [USACO07JAN] Balanced Lineup G-普及/提高-

题目描述

每天,农夫 John 的 n (1≤n≤5×104)n\ (1\le n\le 5\times 10^4)n (1n5×104) 头牛总是按同一序列排队。

有一天,John 决定让一些牛们玩一场飞盘比赛。他准备找一群在队列中位置连续的牛来进行比赛。但是为了避免水平悬殊,牛的身高不应该相差太大。John 准备了 q (1≤q≤1.8×105)q\ (1\le q\le 1.8\times10^5)q (1q1.8×105) 个可能的牛的选择和所有牛的身高 hi (1≤hi≤106,1≤i≤n)h_i\ (1\le h_i\le 10^6,1\le i\le n)hi (1hi106,1in)。他想知道每一组里面最高和最低的牛的身高差。

输入格式

第一行两个数 n,qn,qn,q

接下来 nnn 行,每行一个数 hih_ihi

再接下来 qqq 行,每行两个整数 aaabbb,表示询问第 aaa 头牛到第 bbb 头牛里的最高和最低的牛的身高差。

输出格式

输出共 qqq 行,对于每一组询问,输出每一组中最高和最低的牛的身高差。

输入输出样例 #1

输入 #1

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

输出 #1

6
3
0

solution

静态区间最值查询,可以用ST表

代码

#include "iostream"
#include "math.h"
#include "algorithm"
#include "string.h"
#include "unordered_set"
#include "deque"
#include "stack"
#include "queue"
#include "vector"
#include "unordered_map"using namespace std;
const int N = 1e5 + 5;int my_max[N][20];
int my_min[N][20];int main() {int k, n;cin >> n >> k;for (int i = 1; i <= n; i++) scanf("%d", &my_max[i][0]), my_min[i][0] = my_max[i][0];for (int i = 1; i <= 20; i++) {for (int j = 1; j + (1 << i) - 1 <= n; j++) {my_max[j][i] = max(my_max[j][i - 1], my_max[j + (1 << (i - 1))][i - 1]);my_min[j][i] = min(my_min[j][i - 1], my_min[j + (1 << (i - 1))][i - 1]);}}int r, l, m;for (int i = 0; i < k; i++) {scanf("%d %d", &l, &r);m = log2(r - l + 1);int max_1 = max(my_max[l][m], my_max[r - (1 << m) + 1][m]);int min_1 = min(my_min[l][m], my_min[r - (1 << m) + 1][m]);printf("%d\n", max_1 - min_1);}return 0;
}

结果

在这里插入图片描述

http://www.dtcms.com/a/271599.html

相关文章:

  • 图神经网络 gnn 应用到道路网络拓扑结构与交通碳排放相关性。,拓扑指标量化、时空关联模型及演化机制分析
  • NVIDIA显卡驱动安装失败的解决办法(例如7-zip data error或脚本错误)
  • 数据库技术体系及场景选型方案
  • Linux操作系统之进程间通信:管道概念
  • 双立柱式带锯床cad【1张总图】+设计说明书+绛重
  • 软件发布的完整流程梳理
  • RIP和静态路由结合实验:高可用及高可靠
  • Java -- 异常--以及处理
  • 图像自动化处理初探:从拖拽上传到参数设置
  • 智能Agent场景实战指南 Day 7:智能客服Agent设计与实现
  • 继承与多态:面向对象编程的两大支柱
  • 多线程(2)
  • 1、专栏介绍以及目录
  • Vue3常用指令
  • 可转债应该在什么价卖出?
  • 01-elasticsearch-搭个简单的window服务-ik分词器-简单使用
  • RAGFlow 与 QAnything 智能切片对比:深度解析与优劣考量
  • LeetCode热题100—— 152. 乘积最大子数组
  • ServBay Windows 1.2.0 更新!新增 PHP 设置与 Ollama 支持
  • 一个基于若依(ruoyi-vue3)的小项目部署记录
  • c++11新标准、STL
  • Spring核心注解揭秘:`@Configuration`与`@Component`的本质区别
  • Windows宿主机 与 VMWare centos虚拟机 之间的通信访问
  • Java异步编程全解析:从基础到高阶实战
  • Shader面试题100道之(41-60)
  • 借助ssh实现web服务的安全验证
  • claude code调用(免费白嫖100额度)
  • CentOS/RHEL LVM 磁盘扩展完整教程
  • 数学模型:十大距离
  • 小程序软装: 组件库开发