[NWPU][2014][TRN][22]RMQ和LCA C - RMQ POJ 3264
来源:互联网 发布:横版网络手游 编辑:程序博客网 时间:2024/06/02 02:12
//@auther Yang Zongjun//http://www.cnblogs.com/wuyiqi/archive/2011/10/24/2223017.html//http://blog.csdn.net/acdreamers/article/details/8692384///注意啊,雨神给的PPT上关于rmq_find()函数有误,///以后就用这个模板了, 是我敲代码时看错了PPT是对的#include <iostream>#include <cstdio>#include <cmath>//#include <string.h>//#include <string>#include <cstring>using namespace std;#define PI acos(-1.0)#define EPS 1e-8const int MAXN = 50005;const int INF = 2100000000;int a[MAXN], ans[MAXN];int dpmin[MAXN][20], dpmax[MAXN][20];int n, q;void rmq_st(){ //memset(dpmax, 0, sizeof(dpmax)); //memset(dpmin, 0, sizeof(dpmin)); for(int i = 0; i < n; i++) { dpmin[i][0] = a[i]; dpmax[i][0] = a[i]; } int m = (int)(log(1.0 * n) / log(2.0)); for(int j = 1; j <= m; j++) { int t = n - (1 << j) + 1; for(int i = 0; i <= t; i++) { dpmin[i][j] = min(dpmin[i][j - 1], dpmin[i + (1 << (j - 1))][j - 1]); dpmax[i][j] = max(dpmax[i][j - 1], dpmax[i + (1 << (j - 1))][j - 1]); } }}inline int rmq_findmin(int l, int r){ int k = (int)(log(1.0 * (r - l +1)) / log(2.0)); return min(dpmin[l][k], dpmin[r - (1 << k) + 1][k]);}inline int rmq_findmax(int l, int r){ int k = (int)(log(1.0 * (r - l +1)) / log(2.0)); return max(dpmax[l][k], dpmax[r - (1 << k) + 1][k]);}int main(){ //freopen("C:/Users/Admin/Desktop/input.txt", "r", stdin); while(~scanf("%d %d", &n, &q)) { int x, y; for(int i = 0; i < n; i++) { //cin >> a[i]; scanf("%d", &a[i]); } rmq_st(); for(int i = 0; i < q; i++) { //cin >> x >> y; // cout << rmq_findmax(x-1,y-1) - rmq_findmin(x-1,y-1) << endl; scanf("%d%d", &x, &y); printf("%d\n", rmq_findmax(x-1,y-1) - rmq_findmin(x-1, y-1)); } } return 0;}
0 0
- [NWPU][2014][TRN][22]RMQ和LCA C - RMQ POJ 3264
- [NWPU][2014][TRN][22]RMQ和LCA E - LCA POJ 1470
- 【RMQ+LCA】POJ 1986
- POJ 1986 RMQ+LCA
- POJ 1986 Distance Queries LCA和RMQ
- RMQ 和LCA问题
- LCA和RMQ模板
- LCA和RMQ
- LCA和RMQ
- RMQ和LCA总结
- RMQ和LCA问题
- [NWPU][2014][TRN][5]二分和贪心 M - 贪心 基础 POJ 2709
- LCA & RMQ 模板 POJ 1330
- [NWPU][2014][TRN][13]线段树第一讲 B - 基础 POJ 3264
- 7.12 [NWPU][2014][TRN][4]搜索 C - 广搜 基础
- lca&rmq
- 【RMQ & LCA】
- RMQ && LCA
- 判断代码中main()的个数
- 黑马程序员——java基础:循环
- nsdata
- web.xml文件的作用
- leetcode 之 Distinct Subsequences
- [NWPU][2014][TRN][22]RMQ和LCA C - RMQ POJ 3264
- jsp Hibernate 数据持久化技术(二) ----- 与struts2结合
- IOS 证书 浅谈
- 单例模式
- 分治策略与递归
- 文件大小
- [NWPU][2014][TRN][22]RMQ和LCA E - LCA POJ 1470
- COMP 2012H 开发日记
- Java 并发编程之线程池的使用 (二)