hdu5443 ST表裸题:求区间最大
Posted zsben991126
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu5443 ST表裸题:求区间最大相关的知识,希望对你有一定的参考价值。
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define maxn 1005 using namespace std; int a[maxn],mx[maxn][20]; int n,q,T,l,r; void ST(){ for(int i=1;i<=n;i++) mx[i][0]=a[i]; for(int j=1;(1<<j)<=n;j++) for(int i=1;i+(1<<j)-1<=n;i++) mx[i][j]=max(mx[i][j-1],mx[i+(1<<(j-1))][j-1]); } int query(int L,int R){ int k=0; while((1<<(k+1))<=R-L+1) k++; return max(mx[L][k],mx[R-(1<<k)+1][k]); } int main(){ scanf("%d",&T); while(T--){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); ST(); scanf("%d",&q); while(q--){scanf("%d%d",&l,&r);printf("%d ",query(l,r));} } }
以上是关于hdu5443 ST表裸题:求区间最大的主要内容,如果未能解决你的问题,请参考以下文章
hdu5289 Assignment (区间查询最大值最小值,st算法...)