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算法的主要内容,如果未能解决你的问题,请参考以下文章