hihoCoder 1068 RMQ-ST算法
2015-08-02 16:19
211 查看
#include <bits/stdc++.h> #define N 1000005 using namespace std; int maxl [20], minl [20]; int n, m, a ; void init_RMQ() { int l = int(log((double)n)/log(2.0)); for (int j=1;j<=l;j++) for (int i=1; i + (1 << (j-1) ) - 1 <=n;++i) minl[i][j] = min(minl[i][j-1], minl[i + (1 << (j-1) )][j-1]); } void RMQ(int l, int r) { int k = int(log((double)(r-l+1))/log(2.0)); int a = min(minl[l][k], minl[r - (1<<k) + 1][k]); printf("%d\n",a); } int main() { while (~scanf("%d", &n)) //n long m query { for (int i=1;i<=n;++i) { scanf("%d", &a[i]); maxl[i][0] = minl[i][0] = a[i]; } init_RMQ(); int a, b; scanf("%d",&m); while (m--) { scanf("%d %d", &a, &b); RMQ(a, b); } } return 0; }
相关文章推荐
- join sleep yield
- 常见问题总结
- phalcon——调度控制器
- CSS基础-26CSS常用操作-导航栏
- 读书笔记 TCP滑动窗口
- Swift入门(六)——字典(Dictionary)
- C++标准模板库集合类与映射类总结
- 利用http协议发布博客园博文评论
- Leetcode: Combination Sum III
- leetcode--Binary Tree Upside Down
- POJ 2891 Strange Way to Express Integers
- UVA10815 - Andy's First Dictionary
- Photoshop学习过程中小知识
- codeforces 559C Gerald and Giant Chess(dp+组合数学)
- 3、H5+初始化
- CSS基础-25CSS常用操作-分类
- 【NOIP2013】花匠题解
- UILable如何添加单击事件
- 设计模式(6):代理模式
- C语言编程入门——函数(上)