解题关键:rmq模板题,可以用st表,亦可用线段树等数据结构

log10和log2都可,这里用到了对数的换底公式

类似于区间dp,用到了倍增的思想

$F[i][j] = \min (F[i][j - 1],F[i + 1 <  < (j - 1)][j - 1])$

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<iostream>
using namespace std;
typedef long long ll;
int a[];
int lg;
int min1[][],max1[][],n,q;
void rmq(int n){
for(int j=;j<=lg;j++){
for(int i=;i+(<<j)-<=n;i++){
max1[i][j]=max(max1[i][j-],max1[i+(<<(j-))][j-]);
min1[i][j]=min(min1[i][j-],min1[i+(<<(j-))][j-]);
}
}
}
int main(){
int n,q;
ios::sync_with_stdio();
cin.tie();
cout.tie();
cin>>n>>q;
lg=int(log10(n)/log10());
for(int i=;i<=n;i++) cin>>a[i],min1[i][]=max1[i][]=a[i];
rmq(n);
while(q--){
int a,b;
cin>>a>>b;
if(a>b) swap(a,b);
int k=(int)(log10(b-a+)/log10(2.0));
int maxres=max(max1[a][k],max1[b-(<<k)+][k]);
int minres=min(min1[a][k],min1[b-(<<k)+][k]);
cout<<maxres-minres<<"\n";
}
}

最新文章

  1. Bootstrap3插件系列:bootstrap-select2
  2. B树、B-树、B+树、B*树
  3. jQuery选择器(一)
  4. android studio 应用小知识总结
  5. Oracle的DDL、DML、DCL
  6. CSAPP Lab2: Binary Bomb
  7. Spring IOC配置与应用
  8. cookie 和 session
  9. 两行 CSS 代码实现 PNG 任意颜色赋色技术
  10. 图文并茂的生产者消费者应用实例demo
  11. org.springframework.web.servlet.PageNotFound
  12. TIDB 备忘
  13. mongodb cxx driver学习
  14. C和C指针小记(十八)-使用结构和指针-双向链表
  15. 安卓自动化测试,贺晓聪之uiautomator设备和选择器~Python详解
  16. 通俗理解 CPU &amp;&amp; GPU
  17. Windows2003系统如何设置能让两个人共用一个桌面同时远程控制?
  18. ArcEngine9.3迁移至ArcObject10.1
  19. 会了这十种Python优雅的写法,让你工作效率翻十倍,一人顶十人用!
  20. 安装配置openstack-dashboard(horizon)

热门文章

  1. afinal 文件上传、下载、图片加载实例
  2. Linux mint
  3. linux mint console-setup
  4. 前端基础-CSS属性操作
  5. Hadoop- HDFS的API操作
  6. linux rpm包的编译
  7. python3操作mysql数据库增删改查
  8. runtime error 的原因
  9. Java的反射机制(应用篇)
  10. JS判断2个时间是否在同一周