#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int N = ;
#define INF 0x3f3f3f3f
int maxn[N<<][] , minn[N<<][] , a[N]; void build_dp(int n)
{
memset(maxn , , sizeof(maxn));
memset(minn , 0x3f , sizeof(minn));
for(int i= ; i<n ; i++) minn[i][]=maxn[i][]=a[i];
for(int j= ; (<<(j-))<n ; j++){
for(int i= ; i<n ; i++){
minn[i][j] = min(minn[i][j-] , minn[i+(<<(j-))][j-]);
maxn[i][j] = max(maxn[i][j-] , maxn[i+(<<(j-))][j-]);
}
}
} int get_index(int len)
{
int ans= , l=;
while(l<len){
l<<=;
ans++;
}
return ans-;
} int main()
{
// freopen("a.in" , "r" , stdin);
int n , q , s , t;
while(~scanf("%d%d" , &n , &q))
{
for(int i= ; i<n ; i++){
scanf("%d" , &a[i]);
}
build_dp(n);
for(int i= ; i<q ; i++){
scanf("%d%d" , &s , &t);
s-- , t--;
int len=t-s+ , maxVal= , minVal=INF;
if(s == t){
maxVal = maxn[s][];
minVal = minn[s][];
}else{
int k=get_index(len);
maxVal = max(maxn[s][k] , maxn[t-(<<k)+][k]);
minVal = min(minn[s][k] , minn[t-(<<k)+][k]);
}
printf("%d\n" , maxVal-minVal);
}
}
return ;
}

原来也做过这道题,不过今天刚看完RMQ的ST算法,就用dp的方式再写了一遍

原来用线段树来解决这个问题的,但是这里并不需要节点的更新操作,只是询问,所以在这种情况下,是可以用ST算法来解决这个问题的

最新文章

  1. Xshell显示中文乱码问题
  2. QML杂记
  3. hdu 2044:一只小蜜蜂...(水题,斐波那契数列)
  4. python的hashlib模块
  5. uva 10706 Number Sequence(数学规律)
  6. ZOJ Monthly, October 2010 ABEFI
  7. cocos2d-x 3.x 触摸事件
  8. 机器学习:python中如何使用朴素贝叶斯算法
  9. [转载] Java中常用的加密方法
  10. LCA最近公共祖先(倍增版)
  11. IntelliJ的Scala配置
  12. spring boot 入门(一)
  13. git 创建项目
  14. openStack 重新resize时会进行重新调度,可能在本机Resize 扩展资源,也可能存在的情况时 ,新扩展的资源在当前节点不足分配,整个虚拟机将进行迁移调度,进行异机迁移时需要迁移 的两台主机间能使用nova系统用户经passless登录
  15. [DPI][suricata] suricata 配置使用
  16. git用法-打补丁【转】
  17. esp8266尝鲜
  18. MySQL之EXPLAIN 执行计划详解
  19. 【小程序】返回顶部wx.pageScrollTo和scroll-view的对比
  20. 如何正确实现 IDisposable 接口

热门文章

  1. Oracle中的表空间
  2. Heart Beat
  3. Android 计算view 的高度
  4. vba,excel,网址提取名字与链接url
  5. KMS
  6. xamarin 学习笔记02- IOS Simulator for windows 安装
  7. Java多线程编程核心技术---Lock的基本概念和使用
  8. OracleService類
  9. AttributeError: &#39;dict&#39; object has no attribute &#39;encode&#39;
  10. mysql 查看存储过程 并导出