nyoj--119 士兵杀敌(三)(RMQ)
2016-03-07 21:33
274 查看
nyoj 119
题解
区间最值查询,RMQ模型。#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> using namespace std; const int maxn = 100000 + 10; int maxnum[maxn][17], minnum[maxn][17]; //2^17 = 131072 int n, q; void initRMQ() { int a; for(int i = 1; i <= n; ++i){ scanf("%d", &a); maxnum[i][0] = minnum[i][0] = a; } int k = int(log(n) / log(2)); for(int j = 1; j <= k; ++j) { for(int i = 1; i <= n; ++i) { if(i + (1 << j) - 1 <= n) { maxnum[i][j] = max(maxnum[i][j - 1], maxnum[i + (1 << (j - 1))][j - 1]); minnum[i][j] = min(minnum[i][j - 1], minnum[i + (1 << (j - 1))][j - 1]); } } } } inline int queryRMQ(int flag, int a, int b) { int k = int(log(b - a + 1) / log(2.0)); return flag ? max(maxnum[a][k], maxnum[b - (1 << k) + 1][k]) : min(minnum[a][k], minnum[b - (1 << k) + 1][k]); } int main() { cin >> n >> q; initRMQ(); while(q--) { int a, b; scanf("%d %d", &a, &b); printf("%d\n", queryRMQ(1, a, b) - queryRMQ(0, a, b)); } return 0; }
相关文章推荐
- RM格式压缩电影软件 Easy RealMedia Producer Full V1.94 下载
- 在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
- 比较简单的jquery教程 Easy Ajax with jQuery 中文版全集第1/3页
- Easy RM RMVB to DVD Burner v1.3.8 汉化版 下载 附注册码
- Expandable "Detail" Table Rows
- linux下安装easy_install的方法
- 归纳整理文件Easy Duplicate Finder2.24 破解版
- DM*** and Easy *** Server with ISAKMP Profiles
- easy ***
- cisco packet tracer 5.3 实现基于3A的easy ***
- [Leetcode题目]19. Remove Nth Node From End of List
- [Leetcode题目]21. Merge Two Sorted Lists
- [Leetcode题目]83. Remove Duplicates from Sorted List
- [Leetcode题目]160. Intersection of Two Linked Lists
- [Leetcode题目]203. Remove Linked List Elements
- [Leetcode题目]206. Reverse Linked List
- [Leetcode题目]234. Palindrome Linked List
- 通过 poj3368 问题讨论:RMQ问题的 tarjan_lca 求解
- Plus One [Easy]
- Reverse Integer [Easy]