【poj3264】 Balanced Lineup(st表)

来源:互联网 发布:tensorflow linux 推荐 编辑:程序博客网 时间:2024/05/21 19:39

题目:我是超链接

题解:

一个RMQ的模板

代码:

#include <cstdio>#include <iostream>#include <cmath>#define sz 31using namespace std;int maxx[50005][sz],minn[50005][sz],a[50005];int main(){int n,q,i,j;scanf("%d%d",&n,&q);for (i=1;i<=n;i++) scanf("%d",&a[i]),maxx[i][0]=a[i],minn[i][0]=a[i];for (j=1;j<sz;j++)  for (i=1;i<=n;i++)    if (i+(1<<j)-1<=n)    {    maxx[i][j]=max(maxx[i][j-1],maxx[i+(1<<(j-1))][j-1]);    minn[i][j]=min(minn[i][j-1],minn[i+(1<<(j-1))][j-1]);}while (q--){int l,r;scanf("%d%d",&l,&r);if (l>r) swap(l,r);int k=log2(r-l+1); int Max=max(maxx[l][k],maxx[r-(1<<k)+1][k]);int Min=min(minn[l][k],minn[r-(1<<k)+1][k]);printf("%d\n",Max-Min);}}