RMQ模板

来源:互联网 发布:枸杞泡水 知乎 编辑:程序博客网 时间:2024/05/04 07:19
#include<bits/stdc++.h>using namespace std;const int maxn=10000+10;int a[maxn],n,m;int dp[maxn][21];inline void RMQ(){int Log=log(n)/log(2);for(int j=1;j<=Log;j++)for(int i=1;(i+(1<<j)-1)<=n;i++)dp[i][j]=min(dp[i][j-1],dp[i+(1<<(j-1))][j-1]);}inline int Query(int x,int y){int k=0;k=log(y-x+1)/log(2);return min(dp[x][k],dp[y-(1<<k)+1][k]);}int main(){int i,j,k;freopen("RMQ.in","r",stdin);freopen("RMQ.out","w",stdout);scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&a[i]);for(i=1;i<=n;i++)dp[i][0]=a[i];RMQ();int m;cin>>m;while(m--){int x,y;cin>>x>>y;cout<<Query(x,y)<<endl;}return 0;}

1 0
原创粉丝点击