POJ - 3264:Balanced Lineup

Posted white_hat_hacker

tags:

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

ST表模版

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<cmath>
#define MAXN 50000+10
#define LOG 20
#define pii pair<int,int>
using namespace std;
int dmax[MAXN][LOG];
int dmin[MAXN][LOG];
int n;
int a[MAXN];
void init(){
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        dmax[i][0]=dmin[i][0]=a[i];
    }
    for(int j=1;j<LOG;j++){
        for(int i=1;i<=n;i++){
            if(i+(1<<j)-1>n){
                break;
            }
            dmax[i][j]=max(dmax[i][j-1],dmax[i+(1<<(j-1))][j-1]);
            dmin[i][j]=min(dmin[i][j-1],dmin[i+(1<<(j-1))][j-1]);
        }
    }    
}
int RMQ(int x,int y){
    int len=y-x+1;
    int k=(int)(log(1.0*len)/log(2));
    k=max(k-2,0);
    while((1<<(k+1))<=len)k++;
    int T1=max(dmax[x][k],dmax[y-(1<<k)+1][k]);
    int T2=min(dmin[x][k],dmin[y-(1<<k)+1][k]);
    return (T1-T2);
}
int main()
{
//    freopen("data.in","r",stdin);
    int T;
    scanf("%d%d",&n,&T);
    init();
    while(T--){
        int x,y;scanf("%d%d",&x,&y);
        printf("%d\n",RMQ(x,y));
    }
    return 0;
}

 

以上是关于POJ - 3264:Balanced Lineup的主要内容,如果未能解决你的问题,请参考以下文章

Balanced Lineup POJ - 3264

poj3264 Balanced Lineup 2011-12-20

poj 3264 Balanced Lineup RMQ问题

POJ 3264 Balanced Lineup

POJ-3264-Balanced Lineup-单点更新

POJ3264 Balanced Lineup