1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
//初始化 void
init_rmq( int
n){
for ( int
i=0;i<n;i++)d[i][0]=a[i];
for ( int
j=1;(1<<j)<=n;j++){
for ( int
i=0;i+(1<<j)-1<n;i++)
d[i][j]=max(d[i][j-1],d[i+(1<<(j-1))][j-1]);
}
} //查询 int
query_rmq( int
L, int R){
int
k=0;
while (1<<(k+1)<=R-L+1)k++;
return
max(d[L][k],d[R-(1<<k)+1][k]);
} |
相关文章
- 10-23算法模板——Tarjan强连通分量
- 10-23【模板】dinic算法网络最大流
- 10-23Effective C++ -----条款43:学习处理模板化基类内的名称
- 10-23C++笔记 ——在模板类中重载操作符
- 10-23C++二分查找算法演示源码
- 10-23欧几里德算法及其扩展(推导&&模板)
- 10-23数据结构、算法与应用(C++描述)(第二版)第二章习题解答
- 10-23Dijkstra算法模板
- 10-23算法模板
- 10-23C++第09课 模板 (二)