intf[maxn][30];//第二维是一个长度范围,一般开到30就够大了,例如f[i][j]代表从i开始长度为2^j区间的最值intLog[maxn];voidinits(){Log[1]=0;for(inti=2;i<=n;i++)Log[i]=Log[i/2]+1;}voidRMQ_ST(){for(inti=1;i<=n;i++){f[i][0]=a[i];}intt=Log[n]+1;//预处理Log数组要比自带的log2快一些,如果要进行大量的区间查询,最好是预处理一下// int t = log2(n)+1;for(intj=1;j<t;j++){for(inti=1;i<=n-(1<<j)+1;i++){f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);}}}