#include
#include
#include
using namespace std;
#define maxn 100000
int a[maxn];
int n;
int d[maxn][20];
void RMQ_init()
{
for(int i=1; i<=n; i++)
d[i][0] = a[i];
for(int j=1; (...
分类:
其他好文 时间:
2015-06-13 18:38:19
阅读次数:
115
You are given a sequence of n integers a1 , a2 , ... , an in non-decreasing order. In addition to that, you are given several queries consisting of indices i and j (1
≤ i ≤ j ≤ n). For each query, d...
分类:
其他好文 时间:
2015-06-13 17:15:59
阅读次数:
116
2015-06-10问题简述: 输入一个非递减的数组,输出其中下标 i 到 j 中最大连续元素的个数。 原题链接:http://poj.org/problem?id=3368解题思路: 由于数组长度和查询次数过大,使用遍历算法暴力求解必然导致 TLE,所以我们要另想方法。这里可以使用 RMQ问...
分类:
其他好文 时间:
2015-06-10 18:58:30
阅读次数:
194
1. 概述
RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j当然,该问题也可以用线段树(也叫区间树)解决,算法复杂度为:O(N)~O(logN),这里我们暂不介绍。
2.RMQ算法
对于该问题,最容易想到的解决方案是遍历,复杂度是O(n)。但当数据量非常大...
分类:
编程语言 时间:
2015-06-10 17:25:58
阅读次数:
173
pog loves szh IIITime Limit: 12000/6000 MS (Java/Others)Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 470Accepted Submission(s): 97P...
分类:
其他好文 时间:
2015-06-09 06:06:23
阅读次数:
104
题目地址:HDU 5266
这题用转RMQ求LCA的方法来做的非常简单,只需要找到l-r区间内的dfs序最大的和最小的就可以,那么用线段树或者RMQ维护一下区间最值就可以了。然后就是找dfs序最大的点和dfs序最小的点的最近公共祖先了。
代码如下:#include
#include
#include
#include ...
分类:
其他好文 时间:
2015-06-08 14:59:13
阅读次数:
133
这次省赛 虽然签到题有一点坑(神奇的是我们队还给改对了)但是后面的题没做出来 我感觉还是学的太浅;从今天开始 刷够500题在打比赛;本周目标:后缀数组刷完的话 把上周剩下的rmq补完
分类:
其他好文 时间:
2015-06-07 21:34:50
阅读次数:
102
http://acm.hdu.edu.cn/showproblem.php?pid=3183问题等价与取N-M个数,每次取的时候保证后面能取的个数足够,并且取的数最小 查询最小用rmq 1 #include 2 #include 3 #include 4 #include 5 6 using na....
分类:
其他好文 时间:
2015-06-04 15:20:02
阅读次数:
214
【bzoj3339】Rmq ProblemDescriptionInputOutputSample Input7 5 0 2 1 0 1 3 2 1 3 2 3 1 4 3 6 2 7 Sample Output3 0 3 2 4 HINTorz hzwer学长转------------------...
分类:
其他好文 时间:
2015-06-03 13:33:57
阅读次数:
173
题意:有一个无序数组,求有多少个长度为k的区间满足把区间内的数排序后是连续的。思路:长度为k的区间排序后是 连续的数等价于maxval-minval等于k-1并且不同的数有k个(或者说没有相同的数),第一个条件可以用rmq快速得到区间最大值与最小值之差,第二个条件可以这样求,按区间的左边界分类预处理...
分类:
其他好文 时间:
2015-06-03 06:10:45
阅读次数:
203