hiho1460 rmq模板题】的更多相关文章

好久没做rmq的题了,今天写了一遍,感觉打表有点像区间dp /* 给定长为n的字符串,要求在字符串中选择k个字符, 选择的子系列字典序最小 因为选择k个字符,那么就是去掉n-k个字符 那么[1,n-k+1]位中必定选择一个字符 设这个字符在t1位 然后[t1,n-k+2]位中必定选择一个字符 设这个字符在t2位 以此类推 那么问题就是求区间最小字符的下标 rmq即可 */ #include<bits/stdc++.h> using namespace std; #define maxn 100…
原题大意:原题链接 给定元素无重复数组,查询给定区间内元素是否连续 解体思路:由于无重复元素,所以如果区间内元素连续,则该区间内的最大值和最小值之差应该等于区间长度(r-l) 解法一:线段树(模板题) #include<cstdio> #include<algorithm> #define inf 0x3f3f3f3f using namespace std; ; int va,curmi,curma; *maxn],ma[*maxn]; void Build(int p,int…
http://poj.org/problem?id=3264 题意:给出n个数,还有q个询问,询问[l,r]区间里面最大值和最小值的差值. 思路:RMQ模板题,开两个数组维护最大值和最小值就行. #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; #define N 50010 #define INF 0x3f3f3f3…
题目:点这里 题意:给一个长度n的数列,然后又Q个询问,问L   到R   中最大值与最小值的差. 分析:RMQ 的模板题. 代码: #include<stdio.h> #include<iostream> #include<algorithm> #include<string.h> using namespace std; ; int minm,maxm; ],dp_min[max_][]; int a[max_]; void RMQ_init(int n…
Check Corners Time Limit: 2000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2377    Accepted Submission(s): 859 Problem Description Paul draw a big m*n matrix A last month, whose entries Ai,j are all intege…
Code: #include<cstdio> #include<algorithm> using namespace std; const int maxn = 50000 + 12; int A[maxn]; int dmax[maxn][40]; int dmin[maxn][40]; void init(int *A, int n){ for (int i = 1; i <= n; ++i) dmin[i][0] = dmax[i][0] = A[i]; for(int…
和hdu2888基本上一样的,也是求一个矩阵内的极值 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<cmath> using namespace std; #define maxn 252 int n,b,q; ][],dpmin[maxn][maxn][][],val[maxn][maxn]; void ST(){ int k…
<题目链接> 题目大意: 给定一段序列,进行q次询问,输出每次询问区间的最大值与最小值之差. 解题分析: RMQ模板题,用ST表求解,ST表用了倍增的原理. #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; typedef long long ll; ; int n,q; ll maxsum[M][],mi…
<题目链接> 题目大意:给你一段序列,进行q次区间查询,每次都输出询问区间内的最小值. 解题分析: RMQ模板题,下面用在线算法——ST算法求解.不懂ST算法的可以看这篇博客  >>> #include <cstdio> #include<cstring> #include <cmath> #include <algorithm> using namespace std; ; int n,q; ]; //表示从第i个数起连续2^…
题目链接: Poj 3264 Balanced Lineup 题目描述: 给出一个n个数的序列,有q个查询,每次查询区间[l, r]内的最大值与最小值的绝对值. 解题思路: 很模板的RMQ模板题,在这里总结一下RMQ:RMQ(Range Minimum/Maximum Query) 即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大值. RMQ有三种求法:1:直接遍历查找,炒鸡暴力: 2:线段树也可以解…