POJ 3264 RMQ裸题
题意:n个数,问a[i]与a[j]间最大值与最小值之差。
总结:看了博客,记下了模板,但有些地方还是不太理解。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<bitset>
#include<vector>
#include<set>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
#define F(i,a,b) for (int i=a;i<b;i++)
#define FF(i,a,b) for (int i=a;i<=b;i++)
#define mes(a,b) memset(a,b,sizeof(a))
#define pb push_back
#define INF 0x3f3f3f3f
#define inf 0x3f3f3f3f3f3f3f3fll
typedef long long ll;
const int N = 1e5+; int fmaxn[N][],fminn[N][]; //fmaxn[i][j]表示从第i个数起连续2^j个数中的最大值。(DP的状态)
void RMQ(int num) //预处理->O(nlogn)
{
for(int j=; j<; ++j)
for(int i=; i<=num; ++i)
if(i+(<<j)- <= num)
{
fmaxn[i][j]=max(fmaxn[i][j-], fmaxn[i+(<<(j-))][j-]); //dp推出来的
fminn[i][j]=min(fminn[i][j-], fminn[i+(<<(j-))][j-]);
}
} int main()
{
int h,n,m;
scanf("%d%d", &n,&m);
FF(i,,n) {
scanf("%d", &h);
fmaxn[i][]=fminn[i][]=h;
}
RMQ(n);
int l,r;
FF(i,,m) {
scanf("%d%d", &l,&r);
//查询
int lg=floor(log10(double(r-l+)) / log10(double()));
//也是推出来的,得出的lg要使F[i][lg]覆盖区域(l,r),并且lg要最小。最后得到maxn,minn如下
int maxn=max(fmaxn[l][lg], fmaxn[r-(<<lg)+][lg]);
int minn=min(fminn[l][lg], fminn[r-(<<lg)+][lg]); printf("%d\n", maxn-minn);
} return ;
}
POJ 3264 RMQ裸题的更多相关文章
- poj 3264 RMQ 水题
题意:找到一段数字里最大值和最小值的差 水题 #include<cstdio> #include<iostream> #include<algorithm> #in ...
- POJ 3264 RMQ水题
题目大意就是有很多牛.告诉你每只牛的高度.然后有很多个询问.输出该区间内的最大身高差.也就是用RMQ求最大值最小值.貌似还可以用线段树.然而,我还不会线段树.....T_T 可能是太多组数据了.cin ...
- poj 3264 Balanced Lineup(RMQ裸题)
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 43168 Accepted: 20276 ...
- POJ 1330 LCA裸题~
POJ 1330 Description A rooted tree is a well-known data structure in computer science and engineerin ...
- poj 3264 RMQ
直接写个RMQ就能过. #include<iostream> #include<cstdio> #include<cstring> #include<algo ...
- poj 3264(RMQ或者线段树)
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 42929 Accepted: 20184 ...
- POJ 3264 RMQ问题 用dp解决
#include <cstdio> #include <cstring> #include <iostream> using namespace std; ; #d ...
- poj2019 二维RMQ裸题
Cornfields Time Limit: 1000MS Memory Limit: 30000K Total Submissions:8623 Accepted: 4100 Descrip ...
- POJ 3264:Balanced Lineup(RMQ模板题)
http://poj.org/problem?id=3264 题意:给出n个数,还有q个询问,询问[l,r]区间里面最大值和最小值的差值. 思路:RMQ模板题,开两个数组维护最大值和最小值就行. #i ...
随机推荐
- CSS控制文本在一行内显示,若有多余字符则使用省略号表示
强制文本在一行内显示,多余字符使用省略号 text-overflow: ellipsis; overflow: hidden; white-space: nowrap;
- Could not locate executable E:\SoftWave\Hadoop-2.2.0\bin\winutils.exe in the Hadoop binaries解决办法
需要下载windows版本 bin目录下的文件,替换hadoop目录下原来的bin目录下的文件.下载网址是: https://github.com/srccodes/hadoop-common-2.2 ...
- linux操作系统简单使用
文章将包含几个内容: linux简介 linux操作系统的安装简述 linux操作系统的磁盘文件结构 linux操作系统中的文件操作 linux中的用户管理 网络配置管理 常用系统管理指令 linux ...
- VS2010下调试.NET源码
微软走向开源,是时候用vs去单步调试进入源码了.参考地址:http://blog.csdn.net/waxgourd0/article/details/6600182 可供参考的文章:https:// ...
- 问题记录1:The VMware Authorization Service is not running.
问题 VMware Workstation cannot connect to the virtual machine. Make sure you have rights to run the pr ...
- 引用Excel.dll 时找不到类型怎么办
将引用(Microsoft.Office.Interop.Excel)的属性"嵌入互操作类型"由True修改为False即可
- js验证如何限制文本框只能输入数字
s限制只能数字输入,并且在把输入的“非法字符”清除掉之后将焦点停留在输入非法字符的位置,参考如下:html部分:<input value="" type="text ...
- Scala 中的 apply 和 update 方法[转]
原文链接:http://blog.csdn.net/lyrebing/article/details/21696581 Scala 是构建在 JVM 上的静态类型的脚本语言,而脚本语言总是会有些约定来 ...
- Java 序列化 JDK序列化总结
Java 序列化 JDK序列化总结 @author ixenos Java序列化是在JDK 1.1中引入的,是Java内核的重要特性之一.Java序列化API允许我们将一个对象转换为流,并通过网络发送 ...
- js简单固定table表头及css问题分析。
<head> <meta name="viewport" content="width=device-width" /> <tit ...