poj 3264 倍增 ST表
Posted andromeda-galaxy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj 3264 倍增 ST表相关的知识,希望对你有一定的参考价值。
#include<iostream> #include<cmath> using namespace std; const int maxn=1e5+10; int a[maxn]; int st[maxn][50]; int ST[maxn][50]; int quick(int a,int n) { int ans=1; while(n) { if(n&1) ans*=a; a=a*a; n>>1; } return ans; } int main() { int n,m; cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=n;i>=1;i--) { for(int j=0;i+(1<<j-1)-1<=n;j++) { if(j==0) { st[i][j]=a[i]; ST[i][j]=a[i]; } else { st[i][j]=max(st[i][j-1],st[i+(1<<j-1)][j-1]); ST[i][j]=min(ST[i][j-1],ST[i+(1<<j-1)][j-1]); } } } //cout<<n<<m<<endl; while(m--) { int l,r; cin>>l>>r; //int k=log(r-l+1); int k=0; while(l+(1<<(k+1))<=r+1) k++; int a=max(st[l][k],st[r-(1<<k)+1][k]); int b=min(ST[l][k],ST[r-(1<<k)+1][k]); cout<<a-b<<endl; } return 0; }
以上是关于poj 3264 倍增 ST表的主要内容,如果未能解决你的问题,请参考以下文章