RMQ求区间最值问题
来源:互联网 发布:女王的教室知乎 编辑:程序博客网 时间:2024/06/08 00:34
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <algorithm>
using namespace std;
int map[1000005][20];
int n;
void work()
{
int i,j;
for(j=1;1<<j<=n;j++){
for(i=1;i+(1<<j)-1<=n;i++){
map[i][j]=min(map[i][j-1],map[i+(1<<j-1)][j-1]);
}
}
}
int query(int z,int y)
{
int x=int (log(y-z+1)/log(2));
return min(map[z][x],map[y-(1<<x)+1][x]);
}
int main()
{
scanf("%d",&n);
int i,a,b,k;
for(i=1;i<=n;i++)
scanf("%d",&map[i][0]);
work();
scanf("%d",&k);
for(i=1;i<=k;i++){
scanf("%d%d",&a,&b);
printf("%d\n",query(a,b));
}
return 0;
}
#include <stdio.h>
#include <cstring>
#include <algorithm>
using namespace std;
int map[1000005][20];
int n;
void work()
{
int i,j;
for(j=1;1<<j<=n;j++){
for(i=1;i+(1<<j)-1<=n;i++){
map[i][j]=min(map[i][j-1],map[i+(1<<j-1)][j-1]);
}
}
}
int query(int z,int y)
{
int x=int (log(y-z+1)/log(2));
return min(map[z][x],map[y-(1<<x)+1][x]);
}
int main()
{
scanf("%d",&n);
int i,a,b,k;
for(i=1;i<=n;i++)
scanf("%d",&map[i][0]);
work();
scanf("%d",&k);
for(i=1;i<=k;i++){
scanf("%d%d",&a,&b);
printf("%d\n",query(a,b));
}
return 0;
}
阅读全文
0 0
- RMQ求区间最值问题
- RMQ求区间最值问题
- RMQ求区间最值
- RMQ求区间最值
- RMQ 求区间最值
- POJ - 3264 Balanced Lineup (RMQ问题求区间最值)
- RMQ之ST算法(求区间最值问题)
- RMQ 区间最值问题
- RMQ区间最值问题
- RMQ-区间最值问题
- RMQ求区间最值 nlog(n)
- RMQ算法求区间最值
- RMQ算法,求区间最值
- [Google] RMQ 区间最值问题
- rmq问题(区间最值)
- RMQ算法 (区间最值问题)
- RMQ问题(区间最值查询)
- RMQ算法:区间最值问题
- Android中实现延时执行操作的几种方法
- windows启动redis
- React-引领未来的用户界面开发框架-读书笔记(一)
- EXPDP/IMPDP 中的并行度PARALLEL参数 (并行)
- 字典 拷贝
- RMQ求区间最值问题
- 正则表达式基本语法详解
- Python 函数字典列表嵌套
- hdu 3853 LOOPS
- python中的编码
- 更改了一下用户名,plsql连接成功,但是同样的用户名密码,eclipse始终报错ORA-01017: invalid username/password; logon denied
- 调用CachedRowSetImpl类时,为什么会出现这种错误 Access restriction: The type CachedRowSetImpl is not accessible due
- 并发和并行,异步与多线程区别
- 解决dubbo启动报Failed to bind NettyServer on ip:port的问题