51nod1174区间最大数(RMQ)
来源:互联网 发布:php 二进制转字符串 编辑:程序博客网 时间:2024/06/06 06:59
原题链接
无修改操作的最值查询问题,普通的RMQ最大值问题
代码如下:
#include <cstdio>#include <iostream>#include <cstring>#include <cctype>#include <cmath>#include <algorithm>#include <queue>#include <stack>#include <set>#include <map>#include <cstdlib>#include <vector>#define ll long long#define maxn 10010using namespace std;int a[maxn], d[maxn][20]; // 第二维大小应当估计log2(maxn)void init( int n){ // 初始化操作,a数组下标从0..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 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]);}int main(){int i, j, k, n, q;scanf( "%d", &n);for ( i = 0; i < n; i++){scanf( "%d", &a[i]);}init(n);scanf( "%d", &q);while ( q--){scanf( "%d%d", &i, &j);printf( "%d\n", RMQ( i, j)); }return 0;}
0 0
- 51nod1174区间最大数(RMQ)
- 51nod1174 区间中最大的数
- 51Nod1174 区间中最大的数(学习线段树)
- 51nod--1174 区间中最大的数 (RMQ)
- 【51Nod】1174 - 区间中最大的数(RMQ)
- 51Nod-区间中的最大数(RMQ)
- 51nod:1174 区间中最大的数(RMQ)
- 51Nod-1174 区间中最大的数(RMQ)
- 51Nod 1174 求区间最大的数 RMQ
- 51node-1174-区间中最大的数(RMQ)
- 51nod 1174 区间中最大的数(RMQ)
- 51nod1174【基于线段树的RMQ】
- 51nod 1174 区间中最大的数 (线段树+RMQ)
- 1174 区间中最大的数(RMQ)
- 1174 区间中最大的数 RMQ
- 区间中最大的数 RMQ
- poj3264线段树---区间最大最小值查询(RMQ)
- poj2823------线段树-------求区间最大最小值(RMQ)
- 参与比取胜更重要
- objc runtime 动态增加属性
- 新学的vim命令记录
- [HNOI2005]狡猾的商人(并查集维护前缀和)
- ORACLE 更新推荐人数
- 51nod1174区间最大数(RMQ)
- 关于管道的一些知识
- android Xml控件属性
- 代码:编写一个简单的字符设备驱动——创建多个同类型设备
- JAVA之旅(二十四)——I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习
- 保护模式学习笔记:LDT
- 转向ARC的说明——翻译Apple官方文档
- AAAMybatis使用MapperScannerConfigurer实现自动注册dao到spring容器
- matlab_格式转化