RMQ裸题

Posted You only live once

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RMQ裸题相关的知识,希望对你有一定的参考价值。

POJ 3264

题目大意:求一段区间内最大值与最小值之差

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<algorithm>
 5 #include<cmath>
 6 #define maxn 50005
 7 using namespace std;
 8 int n,m,a[maxn];
 9 int ma[maxn][20],mi[maxn][20];
10 void pre()
11 {
12     for(int i=1;i<=n;i++) mi[i][0]=a[i],ma[i][0]=a[i];
13     for(int j=1;(1<<j)<=n;j++)
14     for(int i=1;i+(1<<j)-1<=n;i++)
15     mi[i][j]=min(mi[i][j-1],mi[i+(1<<(j-1))][j-1]),
16     ma[i][j]=max(ma[i][j-1],ma[i+(1<<(j-1))][j-1]);
17 } 
18 int query(int l,int r)
19 {
20     int k=trunc(log2(r-l+1));
21     return (max(ma[l][k],ma[r-(1<<k)+1][k])-min((mi[l][k]),mi[r-(1<<k)+1][k]));
22 }
23 int main()
24 {
25     int l,r;
26     scanf("%d%d",&n,&m);
27     for(int i=1;i<=n;i++) scanf("%d",&a[i]);
28     pre();
29     for(int i=1;i<=m;i++)
30     {
31         scanf("%d%d",&l,&r);
32         printf("%d\\n",query(l,r));
33     }
34     return 0;
35 } 
View Code

以上 by dsb LQ_double

以上是关于RMQ裸题的主要内容,如果未能解决你的问题,请参考以下文章

HDU 2586 How far away ? << LCA转RMQ+ST表 求树上任两点最短距离裸题

蓝书4.1-4.4 树状数组RMQ问题线段树倍增求LCA

POJ 3264 Balanced Lineup

配置 kafka 同步刷盘

poj1330 Nearest Common Ancestors

POJ-3264 RMQ