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的主要内容,如果未能解决你的问题,请参考以下文章
poj3264 Balanced Lineup 2011-12-20