http://poj.org/problem?id=3264

题意 rmq max min之差

模板:

#define _CRT_SECURE_NO_WARNINGS
#include<cmath>
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
#define rep(i,t,n) for(int i =(t);i<=(n);++i)
#define per(i,n,t) for(int i =(n);i>=(t);--i)
#define mmm(a,b) memset(a,b,sizeof(a))
const int maxn = 5e5 + ;
int cow[maxn], minc[maxn][], maxc[maxn][];
int n, q; void STinit() {
int LOG;
rep(i, , n)minc[i][] = maxc[i][] = cow[i];
LOG = int(log(1.0*n) / log(1.0 * ));
rep(i,,LOG)
per(j, n, ) {
maxc[j][i] = maxc[j][i - ];
if (j + ( << (i - )) <= n)
maxc[j][i] = max(maxc[j][i], maxc[j + ( << (i - ))][i - ]);
minc[j][i] = minc[j][i - ];
if (j + ( << (i - )) <= n)
minc[j][i] = min(minc[j][i], minc[j + ( << (i - ))][i - ]);
}
}
int RMQmax(int l,int r) {
int n = r - l + ;
int LOG = int(log(1.0*n) / log(1.0 * ));
return max(maxc[l][LOG], maxc[r -( << LOG)+][LOG]);
}
int RMQmin(int l, int r) {
int n = r - l + ;
int LOG = int(log(1.0*n) / log(1.0 * ));
return min(minc[l][LOG], minc[r -( << LOG)+][LOG]);
}
int main() {
cin >> n>>q; rep(i, , n)scanf("%d", &cow[i]);
STinit();
rep(i, , q) {
int l, r;
scanf("%d%d", &l, &r); printf("%d\n", RMQmax(l, r) - RMQmin(l, r));
}
cin >> n;
return ;
}

ST表模板 Balanced Lineup POJ3264的更多相关文章

  1. Balanced Lineup poj3264 线段树

    Balanced Lineup poj3264 线段树 题意 一串数,求出某个区间的最大值和最小值之间的差 解题思路 使用线段树,来维护最大值和最小值,使用两个查询函数,一个查区间最大值,一个查区间最 ...

  2. Luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup (ST表模板)

    传送门(ST表裸题) ST表是一种很优雅的算法,用于求静态RMQ 数组l[i][j]表示从i开始,长度为2^j的序列中的最大值 注意事项: 1.核心部分: ; (<<j) <= n; ...

  3. 洛谷 P2880 [USACO07JAN]Balanced Lineup G (ST表模板)

    题意:给你一组数,询问\(q\)次,问所给区间内的最大值和最小值的差. 题解:经典RMQ问题,用st表维护两个数组分别记录最大值和最小值然后直接查询输出就好了 代码: int n,q; int a[N ...

  4. st表模板

    http://blog.csdn.net/insistgogo/article/details/9929103 这篇博客讲解的很详细了,求区间最大值也可以用st表,时间复杂度O(n log(n)),查 ...

  5. 收藏一个ST表模板

    #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #i ...

  6. G - Balanced Lineup - poj3264(区间查询)

    题意:给你一组值,然后询问某个区间的最大值和最小值得差 分析:因为没有更新,所以只需要查找即可,节点保存一个最大值最小值就行了 ************************************ ...

  7. 51nod(1174 区间中最大的数)(ST表模板题)

    1174 区间中最大的数 1.0 秒 131,072.0 KB 0 分 基础题   给出一个有N个数的序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有数中,最大的数是多少. 例如: 1 ...

  8. Balanced Lineup -POJ3264

    题意: 告诉你n头奶牛的高度,然后给你一个区间,你需要求出这个区间最高的奶牛与最矮的奶牛之间相差多少 链接:http://poj.org/problem?id=3264 思路: 线段树区间查询,用两个 ...

  9. POJ 3264 Balanced Lineup | st表

    题意: 求区间max-min st表模板 #include<cstdio> #include<algorithm> #include<cstring> #inclu ...

随机推荐

  1. C++复数运算 重载

    近期整理下很久前写的程序,这里就把它放在博文中了,有些比较简单,但是很有学习价值. 下面就是自己很久前实现的复数重载代码,这里没有考虑特殊情况,像除法中,分母不为零情况. #include <i ...

  2. linux每日命令(18):whereis命令

    whereis命令用于查找文件. 该指令会在特定目录中查找符合条件的文件.这些文件应属于原始代码.二进制文件,或是帮助文件. 该指令只能用于查找二进制文件.源代码文件和man手册页,一般文件的定位需使 ...

  3. NodeJS + PhantomJS 抓取页面信息以及截图

    利用PhantomJS做网页截图经济适用,但其API较少,做其他功能就比较吃力了.例如,其自带的Web Server Mongoose最高只能同时支持10个请求,指望他能独立成为一个服务是不怎么实际的 ...

  4. 【转帖】39个让你受益的HTML5教程

    39个让你受益的HTML5教程                    闲话少说,本文作者为大家收集了网上学习HTML5的资源,期望它们可以帮助大家更好地学习HTML5. 好人啊! 不过,作者原来说的4 ...

  5. Guava学习笔记(三):集合

    添加Maven依赖 ListsTest import com.google.common.collect.Lists; import org.hamcrest.core.Is; import org. ...

  6. 一种消息和任务队列——beanstalkd

    beanstalkd 是一个轻量级消息中间件,其主要特性: 基于管道  (tube) 和任务 (job) 的工作队列 (work-queue):d 管道(tube),tube类似于消息主题(topic ...

  7. AES和RSA算法的demo代码

    aes代码示例: package com.autoyol.util.security.test; import java.security.Key; import java.security.NoSu ...

  8. [Bayes] Improve HMM step by step

    以下是HMM,当emission probability变为高斯时,只需改变其中相关部分即可,也就是下图最后一行. 如下可见,在优化过程中套路没有太大的影响,但变为高斯后表达变得更精确了呢. 当然,这 ...

  9. akka cluster sharding

    cluster sharding 的目的在于提供一个框架,方便实现 DDD,虽然我至今也没搞明白 DDD 到底适用于是什么场合,但是 cluster sharding 却是我目前在做的一个 proje ...

  10. 理解AppDomain

    在传统的 Win32的程序中,进程是独立的运行空间, 在一些大型系统中, 通常都是将系统中的核心功能分解出来用独立的进程来处理,一方面是为了能获得更高的系统性能.吞吐量 .另一方面是为了能隔离功能之间 ...