题意

传送门 POJ 3264

题解

线段树维护区间的最大值和最小值即可。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define min(a,b)    (((a) < (b)) ? (a) : (b))
#define max(a,b)    (((a) > (b)) ? (a) : (b))
#define abs(x)    ((x) < 0 ? -(x) : (x))
#define INF 0x3f3f3f3f
#define delta 0.85
#define eps 1e-5
#define PI 3.14159265358979323846
#define MAX_N 50005
using namespace std;
typedef pair<int, int> P;
const int ST_SIZE = (1 << 17) - 1;
int N, Q;
int H[MAX_N];
P st[ST_SIZE]; // max, minvoid init(int k, int l, int r){ // [l, r)if(r - l == 1) st[k] = P(H[l], H[l]);else{int chl = (k << 1) + 1, chr = (k << 1) + 2, m = (l + r) >> 1;init(chl, l, m);init(chr, m, r);st[k] = P(max(st[chl].first, st[chr].first), min(st[chl].second, st[chr].second));}
}P query(int a, int b, int k, int l, int r){if(b <= l || r <= a) return P(-INF, INF);else if(a <= l && r <= b) return st[k];else{int chl = (k << 1) + 1, chr = (k << 1) + 2, m = (l + r) >> 1;P p1 = query(a, b, chl, l, m), p2 = query(a, b, chr, m, r);return P(max(p1.first, p2.first), min(p1.second, p2.second));}
}int main(){while(~scanf("%d%d", &N, &Q)){for(int i = 0; i < N; i++) scanf("%d", H + i);init(0, 0, N);for(int i = 0; i < Q; i++){int a, b;scanf("%d%d", &a, &b);P p = query(a - 1, b, 0, 0, N);printf("%d\n", p.first - p.second);}}return 0;
}

POJ 3264 线段树相关推荐

  1. POJ 3468 线段树+lazy标记

    lazy标记   Time Limit:5000MS     Memory Limit:131072KB     64bit IO Format:%I64d & %I64u  Submit S ...

  2. poj(2325)线段树

    这里介绍另外一种解法,此题可以用线段树,可以用树状数组 其实这题求的都是下面的和左面的,线段树这种数组结构刚好可以满足,为什么呢?这里稍微解释下吧,也有助于以后的复习 看上面这个图,[1,1],[2, ...

  3. poj 3468 线段树

    线段树的 建立build(初始化+左右相等+两个递归+别忘了sum)+更新update(递归出口+更新delta+三向递归+修正当前节点的value)+查找query(如果左右相等+更新delta+三 ...

  4. POJ - 2528 线段树+离散化

    其实很早就在白书上的常用技巧上 看到离散化的操作,但是之前一直没遇到过需要离散化的题目(应该是我太菜的缘故),所以一直也没怎么重视,下面说说这道题目的考点,也就是离散化. 什么是离散化呢?请先自行百度 ...

  5. poj 2777(线段树+区间染色)

    解题思路:这道题利用了线段树+位运算的思想,由于颜色的种类只有30种,所以int可以存下来,所以我们在线段树的节点里面加上status的状态信息,表示这段区间内的颜色信息,而且我们可以知道,父节点的s ...

  6. poj 2352 线段树

    注意到题目中给的y是递增的,那个y没什么用,直接线段树维护一段1,x的区间. #include<string> #include<iostream> #include<c ...

  7. A Simple Problem with Integers POJ - 3468 (线段树)

    思路:线段树,区间更新,区间查找 1 #include<iostream> 2 #include<vector> 3 #include<string> 4 #inc ...

  8. poj 2528 线段树离散化+染色

    题目链接 Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 92628 Accepted: 2645 ...

  9. Hotel POJ - 3667(线段树 + 区间合并

    题意: 给定长度为n的区间 ,有2个操作: 操作1: 在区间中靠左放k个元素,输出新放入元素中最左边的位置,如果放不下输出 0: 操作2 : 清空 l 到 l+w-1这一段区间的元素 这里有一个状态转 ...

最新文章

  1. SLAM Scan-Matching/Registration
  2. zendStudio|Eclipse 相关收藏
  3. python简单好看的代码_Python新手写出漂亮的爬虫代码1
  4. 小米登录协议分析_小米温湿度传感器协议分析
  5. MongoDB 安装记录
  6. middleware什么意思_middleware
  7. 从github安装python项目
  8. 随机信号分析基础——例题篇(例题3.1)
  9. Otsu最大类间方差法
  10. 请教点击按钮时获得文本框中的字符进行操作问题
  11. 鉴相器 matlab,MATLAB锁相环仿真程序求解
  12. 【LG-P1251】餐巾计划问题
  13. 使用 Suspense 改善 Vue 3 中的用户体验
  14. gtx1650显卡什么级别! GTX1650相当于什么显卡
  15. 苹果手机验真假_别再被坑了,这3大技巧可辨别真假iPhone,懂得话赚大了
  16. 在线支付支付宝(一)之开发者账号申请
  17. 使用JQuery快速高效制作网页交互特效第五章所有上机
  18. ArcView GIS 应用与开发技术(4)-地图投影
  19. java基于springboot +vue的图书馆图书借阅系统
  20. unity通过rtsp协议实现云台的实时连接(一)

热门文章

  1. 立交匝道中边桩坐标放样正反算程序RAMP
  2. 特殊矩阵(对称矩阵)的压缩存储和解压缩
  3. UE4插件与编辑器Slate
  4. geany配置python_Python 04 Geany的安装和配置
  5. 【毕业季】研究生学长分享怎样让本科更有意义
  6. Hadoop2.x与Hadoop3.x的默认端口变化
  7. 基于FPGA的电子万年历设计
  8. bluez——mgmt分析
  9. 2021 ICCV论文分享 | 遮挡边界检测
  10. 编程入门先学哪种语言好