某个叫做RMQ的东东
虽然不知道自己在写什么。。。
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N=1e6+5,LogN=20; int log[N],f[N][LogN+5],a[N]; int n,m,x,y; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); log[0]=-1; //预处理边界值以及长度为1-n的log值 for(int i=1;i<=n;i++) { f[i][0]=a[i]; log[i]=log[i>>1]+1; } //计算f[i][j] for(int j=1;j<=LogN;j++) for(int i=1;i+(1<<j)-1<=n;i++) f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]); scanf("%d",&m); while(m--) { scanf("%d%d",&x,&y); int s=log[y-x+1]; //求log2(y-x+1)向下取整的值 printf("%d\n",max(f[x][s],f[y-(1<<s)+1][s])); } return 0; }
~~凌乱~~
LCA中的RMQ