RMQ(Range Minimum/Maximum Query)区间最值查询,即给出长度为n的数组A,以及m组询问s、t(s<=t<=n),返回区间[s,t]中的最值。

基于线段树的方法实现的话,建树O(n),查询O(logn),相比ST,适合用于n更大,m较小的情况。

void built(int k, int l, int r)
{
if (l==r) t[k] = a[l]; //到叶子上,则赋值
else {
built(k*2+1, l, (l+r)/2); //左儿子
built(k*2+2, (l+r)/2, r); //右儿子
t[k] = min(t[k*2+1], t[k*2+2]); //回溯赋值
}
}
void update(int k, int a)
{
//叶子节点
k += n-1;
t[k] = a;
//向上更新
while (k>0) {
k = (k-1)/2;
t[k] = min(t[k*2+1], t[k*2+2]);
}
}
int query(int a, int b, int k, int l, int r) //查询区间[a,b], 当前查询结点的位置为k, 所表示的区间为[l,r],默认k为根结点
{
if (r<=a||b<=l) return INF; //当前区间与所查询区间无交集,返回一个不影响答案的值
if (a<=l&&r<=b) return t[k]; //当前区间包含于所查询区间,直接返回当前区间的最值就好了
else {
int vl = query(a, b, k*2+1, l, (l+r)/2); //查询左儿子
int vr = query(a, b, k*2+1, (l+r)/2, r); //查询右儿子
return min(vl, vr);
}
}

https://blog.csdn.net/zearot/article/details/48299459

https://blog.csdn.net/lian233/article/details/58250641

基于线段树的RMQ的更多相关文章

  1. 51nod1174【基于线段树的RMQ】

    很基础啊~ #include <bits/stdc++.h> using namespace std; typedef long long LL; const int INF=-0x3f3 ...

  2. 线段树+RMQ问题第二弹

    线段树+RMQ问题第二弹 上篇文章讲到了基于Sparse Table 解决 RMQ 问题,不知道大家还有没有印象,今天我们会从线段树的方法对 RMQ 问题再一次讨论. 正式介绍今天解决 RMQ 问题的 ...

  3. POJ 3368 Frequent values 线段树与RMQ解法

    题意:给出n个数的非递减序列,进行q次查询.每次查询给出两个数a,b,求出第a个数到第b个数之间数字的最大频数. 如序列:-1 -1 1 1 1 1 2 2 3 第2个数到第5个数之间出现次数最多的是 ...

  4. POJ-3264 Balanced Lineup(区间最值,线段树,RMQ)

    http://poj.org/problem?id=3264 Time Limit: 5000MS     Memory Limit: 65536K Description For the daily ...

  5. poj 3264 Balanced Lineup(线段树、RMQ)

    题目链接: http://poj.org/problem?id=3264 思路分析: 典型的区间统计问题,要求求出某段区间中的极值,可以使用线段树求解. 在线段树结点中存储区间中的最小值与最大值:查询 ...

  6. tyvj 1038 忠诚 区间最小值 线段树或者rmq

    P1038 忠诚 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天 ...

  7. Codeforces Round #278 (Div. 1) Strip (线段树 二分 RMQ DP)

    Strip time limit per test 1 second memory limit per test 256 megabytes input standard input output s ...

  8. V-Parenthesis 前缀+ZKW线段树或RMQ

    Bobo has a balanced parenthesis sequence P=p 1 p 2…p n of length n and q questions. The i-th questio ...

  9. POJ - 3264 Balanced Lineup(线段树或RMQ)

    题意:求区间最大值-最小值. 分析: 1.线段树 #include<cstdio> #include<cstring> #include<cstdlib> #inc ...

随机推荐

  1. Spring Security OAuth2.0认证授权二:搭建资源服务

    在上一篇文章[Spring Security OAuth2.0认证授权一:框架搭建和认证测试](https://www.cnblogs.com/kuangdaoyizhimei/p/14250374. ...

  2. APPIUM-Android自动化元素定位方式

    一.常用元素定位方法 appium从selenium中继承了所有的元素定位方法, 并且增加了一些自己的元素定位方式,下方截图分别为selenium和MobileBy包源码: 但是从继承selenium ...

  3. Hbase RIT故障修复

    业务场景: RocketMQ+Storm+Hbase 组件版本: RocketMQ:3.4.6 Storm:1.2.1 Hbase:1.2.1 1. 问题描述 4月15号早上发现业务系统前一天数据量明 ...

  4. 【Oracle】修改oracle中SGA区的大小

    1.备份数据库: 2.关机,拔下电源和各种连接线,抽出机箱,打开机箱上盖,增加内存: 3.完成后按原样将各个部件及连接线恢复好,电开机,系统正常运行: 4.进入系统查看,发现内存已经顺利安装: 5.修 ...

  5. 【转】Js中的window.parent ,window.top,window.self 详解

    [转自]http://blog.csdn.net/zdwzzu2006/article/details/6047632 在应用有frameset或者iframe的页面时,parent是父窗口,top是 ...

  6. Spring Security,没有看起来那么复杂(附源码)

    权限管理是每个项目必备的功能,只是各自要求的复杂程度不同,简单的项目可能一个 Filter 或 Interceptor 就解决了,复杂一点的就可能会引入安全框架,如 Shiro, Spring Sec ...

  7. 转 Fiddler3 使用技巧

    Fiddler3 使用技巧  文章转自:https://www.cnblogs.com/zhengna/category/1466001.html 1.Fiddler抓不到包怎么解决 (1)先确定是H ...

  8. AES 密钥与 RSA 密钥的关系

    AES 加密说明 - 支付宝开放平台 https://opendocs.alipay.com/open/common/104567 AES 密钥是对接口请求和响应内容进行加密,密文无法被第三方识别,从 ...

  9. 小鹏汽车技术中台实践 :微服务篇 InfoQ 今天 以下文章来源于InfoQ Pro

    小鹏汽车技术中台实践 :微服务篇 InfoQ  今天 以下文章来源于InfoQ Pro

  10. 用Jenkins构建Django持续集成环境

    用Jenkins构建Django持续集成环境 - V2EX https://www.v2ex.com/t/32054