RMQ问题&ST算法

Posted zhangqiling

tags:

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

 

 1 #include<bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 const int N = 1e5 + 5;
 6 
 7 int f[N][30],a[N];
 8 
 9 int read(){
10     int x=0,flag=1;
11     char ch=getchar();
12     while(!isdigit(ch)){ if(ch == -) flag = -1;ch = getchar();}
13     while(isdigit(ch)){ x = (x<<3) + (x<<1) + (ch^48); ch = getchar();}
14     return x * flag;
15 }
16 
17 int main(){
18     
19     int n = read();
20     int m = read();
21     //³õʼ»¯ 
22     for(int i=1; i<=n; i++) f[i][0] = read();
23     //½¨Á¢ST±í 
24     int maxn = log(n) / log(2) + 1;//ÉϽç 
25     for(int j=1; j<maxn; j++){
26         for(int i=1; i<=n+1-(1<<j); i++){
27             f[i][j] = max(f[i][j-1],f[i+(1<<j-1)][j-1]);
28         }
29     }
30     //²éѯ 
31     for(int i=1; i<=m; i++){
32         int l = read();
33         int r = read();
34         int k = log(r-l+1) / log(2);//Ͻç
35         printf("%d
",max(f[l][k],f[r+1-(1<<k)][k]));
36     } 
37     return 0;
38 }

 例题:[模板]ST表

    [USACO07JAN]Balanced Lineup G

 

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

RMQ问题&ST算法

RMQ问题 ST算法

线段树&&ST

ST算法(倍增)(用于解决RMQ)

RMQ算法 (ST算法)

hiho16 RMQ-ST算法RMQ-ST算法