P3865 模板ST表
Posted luoyugongxi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P3865 模板ST表相关的知识,希望对你有一定的参考价值。
这是一道ST表经典题——静态区间最大值
给定一个长度为 NN 的数列,和 MM 次询问,求出每一次询问的区间内数字的最大值。
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 #define il inline 5 #define it register int 6 #define inf 0x3f3f3f3f 7 #define lowbit(x) (x)&(-x) 8 #define mem(a,b) memset(a,b,sizeof(a)) 9 #define modd 998244353 10 const int maxn=1e6+10; 11 int st[maxn][20],n,m,k,a[maxn]; 12 il void makest(){ 13 for(it i=1;i<=n;i++){ 14 st[i][0]=a[i]; 15 } 16 for(it i=1;(1<<i)<=n;i++){ 17 for(it j=1;j+(1<<i)-1<=n;j++){ 18 st[j][i]=max(st[j][i-1],st[j+(1<<i-1)][i-1]); 19 } 20 } 21 } 22 int main(){ 23 scanf("%d%d",&n,&m); 24 for(it i=1;i<=n;i++){ 25 scanf("%d",&a[i]); 26 } 27 makest(); 28 while(m--){ 29 int l,r; 30 scanf("%d%d",&l,&r); 31 int k=log2(r-l+1); 32 printf("%d ",max(st[l][k],st[r-(1<<k)+1][k])); 33 } 34 return 0; 35 }
以上是关于P3865 模板ST表的主要内容,如果未能解决你的问题,请参考以下文章