poj 3264 Balanced Lineup【RMQ-ST查询区间最大最小值之差 +模板应用】
题目地址:http://poj.org/problem?id=3264
Sample Input
- 6 3
- 1
- 7
- 3
- 4
- 2
- 5
- 1 5
- 4 6
- 2 2
Sample Output
- 6
- 3
- 0
分析:标准的模板题,可以用线段树写,但用RMQ-ST来写代码比较短。
每次输出区间【L, R】内最大值和最小值的差是多少。
注意一个地方,代码里面用到了log2()函数,但是我用包含<math.h>和<cmath>头文件的代码以C++的方式提交到POJ反馈是编译错误。
改成g++提交才AC了。(注意不一定是用log2(), 采用换底公式的写法,换成log()函数)
代码:
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <ctype.h>
- #include <math.h>
- #include <cmath>
- #include <iostream>
- #include <string>
- #include <queue>
- #include <stack>
- #include <vector>
- #include <algorithm>
- #define N 100000+100
- using namespace std;
- int n, m;
- int f[N];
- //poj 3264
- int st_max[N][22];
- int st_min[N][22];
- void ST_prepare()
- {
- int i, j;
- for(i=1; i<=n; i++){
- st_min[i][0]=f[i];
- st_max[i][0]=f[i];
- }
- for(j=1; (1<<j)<=n; j++){
- for(i=1; i+(1<<j)-1<=n; i++){
- st_min[i][j]=min(st_min[i][j-1], st_min[i+(1<<(j-1))][j-1] );
- st_max[i][j]=max(st_max[i][j-1], st_max[i+(1<<(j-1))][j-1] );
- } //一开始写只写了求最小值的,内层for循环没写括号, 导致后来添加上求最大值后,运行就是不对
- } //预处理 //因为疏忽 内层循环执行两个命令却没有大括号,,,debug半天,以后切记
- }
- int RMQ_ST_min(int li, int ri)
- {
- int k=log2(ri-li+1);
- return min(st_min[li][k], st_min[ri-(1<<k)+1][k] );
- }
- int RMQ_ST_max(int li, int ri)
- {
- int k=log2(ri-li+1);
- return max(st_max[li][k], st_max[ri-(1<<k)+1][k] );
- }
- int main()
- {
- int i, j;
- scanf("%d %d", &n, &m);
- for(i=1; i<=n; i++)
- scanf("%d", &f[i]); //建立数组
- ST_prepare();
- int li, ri;
- while(m--){
- scanf("%d %d", &li, &ri);
- //printf("%d---%d", RMQ_ST_max(li, ri), RMQ_ST_min(li, ri) );
- printf("%d\n", RMQ_ST_max(li, ri)-RMQ_ST_min(li, ri) );
- }
- return 0;
- }
poj 3264 Balanced Lineup【RMQ-ST查询区间最大最小值之差 +模板应用】的更多相关文章
- POJ - 3264 Balanced Lineup (RMQ问题求区间最值)
RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就 ...
- POJ 3264 Balanced Lineup RMQ ST算法
题意:有n头牛,编号从1到n,每头牛的身高已知.现有q次询问,每次询问给出a,b两个数.要求给出编号在a与b之间牛身高的最大值与最小值之差. 思路:标准的RMQ问题. RMQ问题是求给定区间内的最值问 ...
- Poj 3264 Balanced Lineup RMQ模板
题目链接: Poj 3264 Balanced Lineup 题目描述: 给出一个n个数的序列,有q个查询,每次查询区间[l, r]内的最大值与最小值的绝对值. 解题思路: 很模板的RMQ模板题,在这 ...
- POJ 3264 Balanced Lineup 【ST表 静态RMQ】
传送门:http://poj.org/problem?id=3264 Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total S ...
- poj 3264 Balanced Lineup (RMQ)
/******************************************************* 题目: Balanced Lineup(poj 3264) 链接: http://po ...
- POJ 3264 Balanced Lineup 【线段树/区间最值差】
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 62103 Accepted: 29005 Cas ...
- POJ 3264 Balanced Lineup (线段树查找最大最小值)
http://poj.org/problem?id=3264 题意:给你一个长度为n的序列a[N] (1 ≤ N ≤ 50000),询问Q(1 ≤ Q ≤ 200000) 次,每次输出[L, R]区间 ...
- poj 3264 Balanced Lineup (RMQ算法 模板题)
RMQ支持操作: Query(L, R): 计算Min{a[L],a[L+1], a[R]}. 预处理时间是O(nlogn), 查询只需 O(1). RMQ问题 用于求给定区间内的最大值/最小值问题 ...
- POJ 3264 Balanced Lineup(ST模板)
链接:http://poj.org/problem?id=3264 题意:给n个数,求一段区间L,R的最大值 - 最小值,Q次询问 思路:ST表模板,预处理区间最值,O(1)复杂度询问 AC代码: # ...
随机推荐
- ps选框工具全解
我们每次选择工具的时候,ps上面都会变成特定的选项,比如说下面这些: 比如说选区工具的话就分为新选区.添加选区.交叉选区之类的,这些都是需要在实战中练习的. 不单单是选区有这个工具,其他的也有这个功能 ...
- keil 中的一些设置
option for target 'target 1' 中: 第3选项output: select folder for objects :此选项是选择编译时产生的以希望文件,点击选择路径,不然这些 ...
- Hadoop-2.6.0上调用C的API实现相似云盘的功能
Hadoop-2.6.0上调用C的API实现类似云盘的功能(上传.下载.删除,重命名) 測试系统:CentOS6.6, hadoop-2.6.0 本次測试是调用hadoop下的C的API来訪问HDFS ...
- jeecms搜索结果排序-二次开发
jeecms搜索用的是apache Lucene,要实现此功能得先去学习它. 直接上代码 package com.jeecms.cms.lucene; import java.io.IOExcepti ...
- File类的源码学习
File类是Java中IO部分的一个类,用于表示文件或者目录的.关于File类有很多的常规操作这里就不介绍了,来看一下不常规的东西. File英文意思是文件,但是它也可以用来表示目录,文件的概念还是比 ...
- (2) yum源配置-163
1.获取yum源文件 登录http://mirrors.163.com/.help/centos.html,查看CentOS6的链接地址(右键点击“CentOS6”,选择复制链接地址),链接地址为:h ...
- 从零开始学android -- Service
废话不多说了,Service是四大组件之一,是一个后台处理长时间运行在主线程不需要依赖ui界面显示的应用组件,切记不能在service中做耗时操作,会阻塞主线程,要做也要在service中开个子线程做 ...
- JSP 生命周期 理解JSP底层功能的关键就是去理解它们所遵守的生命周期
JSP 生命周期 理解JSP底层功能的关键就是去理解它们所遵守的生命周期. JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件编译成ser ...
- 几种session存储方式比较
原文: http://blog.sina.com.cn/s/blog_495697e6010143tj.html 集群中session安全和同步是个最大的问题,下面是我收集到的几种session同步的 ...
- 转载 【iOS开发】网页JS与OC交互(JavaScriptCore) OC ----->JS
目标 本文介绍利用苹果在iOS7时发布的JavaScriptCore.framework框架进行js与OC的交互.我们想要达到的目标是: OC调用网页上的js方法 网页js调用APP中的OC方法 ...