#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn= 100000+50;
int n,m,a[maxn],mx[maxn][50],mn[maxn][50];//这里mx[maxn][范围内尽量取大一点]void init(){int m=floor(log((double)n)/log(2.0));for(int i=1;i<=n;i++) mx[i][0]=mn[i][0]=a[i];for(int i=1;i<=m;i++)for(int j=n;j;j--){mx[j][i]=mx[j][i-1];mn[j][i]=mn[j][i-1];if(j+(1<<(i-1))<=n){mx[j][i]=max(mx[j][i],mx[j+(1<<(i-1))][i-1]);mn[j][i]=min(mn[j][i],mn[j+(1<<(i-1))][i-1]);}}
}int query(int l,int r){int m=floor(log((double)(r-l+1))/log(2.0));int Max=max(mx[l][m],mx[r-(1<<m)+1][m]);int Min=min(mn[l][m],mn[r-(1<<m)+1][m]);return Max-Min;
}int main()
{while(scanf("%d%d",&n,&m)!=EOF){for(int i=1;i<=n;i++)scanf("%d",&a[i]);init();while(m--){int left,right;scanf("%d%d",&left,&right);int t=query(left,right);printf("%d\n",t);}}return 0;
}
详细解决方案
poj 3264 (summerIII O) j树状数组 ST表(区间最值查询)
热度:27 发布时间:2023-12-16 03:56:01.0
相关解决方案
- POJ 3264 Balanced Lineup .
- Balanced Lineup poj 3264
- POJ 3264 Balanced Lineup【RMQ问题】
- Windows 下编译 OpenSSL 3264
- POJ 3264 Balanced Lineup(线段树, 裸题)
- 【Polya】 hdu 3923(SummerIII Y)
- poj 2752 (summerIII seek the name,seek the fame)
- poj 3264 (summerIII O) j树状数组 ST表(区间最值查询)
- poj-3264-Balanced Lineup-线段树-区域查询
- Pku oj 3264 Balanced Lineup(RMQ)
- POJ-3264 Balanced Lineup(RMQ)
- hdu - 3264 - Open-air shopping malls(二分 + 圆面积交)
- 【转】POJ 3264 线段树解法
- poj 3264 Balanced Lineup【RMQ】
- POJ 3264 Balanced Lineup(RMQ入门模板题)
- POJ 3264 Balanced Lineup(线段树,简单区间query)