分别写了下标从0和1开始的两种

 #include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
using namespace std; const int maxn=1e5+;
const int maxl=; int ma[maxn][maxl];
int st[maxn][maxl];
int a[maxn],prelog[maxn]; void initRMQ(int n){
for(int i=;i<=n;++i){
prelog[i]=prelog[i-];
if((i&(-i))==i)prelog[i]++;
}
for(int i=;i<=n;++i)ma[i][]=a[i];
for(int j=;(<<j)<=n;++j){
for(int i=;i+(<<j)-<=n;++i){
ma[i][j]=max(ma[i][j-],ma[i+(<<j-)][j-]);
}
}
} int askRMQ(int l,int r){
if(l>r)swap(l,r);
int k=prelog[r-l+];
return max(ma[l][k],ma[r-(<<k)+][k]);
} void initST(int n){
for(int i=;i<=n;++i){
prelog[i]=prelog[i-];
if((<<prelog[i]+)==i)++prelog[i];
}
for(int i=;i<n;++i)st[i][]=a[i];
for(int i=n-;i>=;--i){
for(int j=;i+(<<j)-<n;++j){
st[i][j]=max(st[i][j-],st[i+(<<j-)][j-]);
}
}
} int askST(int l,int r){
if(l>r)swap(l,r);
int k=prelog[r-l+];
return max(st[l][k],st[r-(<<k)+][k]);
}

最新文章

  1. Web前端开发css基础样式总结
  2. 解决tomcat启动Socket监听端口死循环被hold问题
  3. [Angularjs]ng-switch用法
  4. 学习总结 java 创建及其练习
  5. ASP.NET,web.config 中SessionState的配置
  6. idl生成.h .c文件
  7. NDK编译Python2.7.5
  8. ecshop的aes加密(封装)
  9. ant+eclipse知识点详解及使用案例
  10. shell编程企业级实战(2)
  11. Centos 安装 mysql yum
  12. Meterpreter常⻅见⽤用法
  13. svn 更新
  14. Ajax简单整理-思维导图
  15. JSON实例(单对象)
  16. 读取SD卡中的图片
  17. BZOJ3427 Poi2013 Bytecomputer 【dp】
  18. vector的内存分配机制分析
  19. CodeForces Round #515 Div.3 A. Vova and Train
  20. Web前端开发规范【HTML/JavaScript/CSS】

热门文章

  1. 【转】Matlab练习程序(各向异性扩散)
  2. centos添加硬盘
  3. PHP JS JQ 异步上传并立即显示图片
  4. JAVA String,StringBuffer与StringBuilder的区别??
  5. mybatis学习
  6. 静态变量static和extern外引用
  7. 简单阐述下OC中UIImage三种创建方式~~~
  8. UE4蓝图编程的第一步
  9. 基于KNN的newsgroup 18828文本分类器的Python实现
  10. java语法基础