RMQ 模板一份


 1 void RMQ_Init(const vector<int>& A) 2 { 3     int n=A.size(); 4     for (int i=0;i<n;i++) d[i][0]=A[i]; 5     for (int j=1;(1<<j)<=n;j++) 6         for (int i=0;i+(1<<j)-1<n;i++) 7             d[i][j]=min(d[i][j-1],d[i+(1<<(j-1))][j-1]); 8 } 9 10 int RMQ(int L,int R)11 {12     int k=0;13     for (k=0;1<<(k+1)<=R-L+1;k++);14     return min(d[L][k],d[R-(1<<k)+1][k]);    15 }

RMQ 模板一份

时间: 2024-10-14 19:03:06

RMQ 模板一份的相关文章

RMQ模板

附上一个详细的大佬的讲解  http://blog.csdn.net/niushuai666/article/details/6624672 RMQ模板(NYOJ 119) #include <cstdio> #include <cstring> #include <iostream> #include <map> #include <vector> #include <algorithm> #include <cmath>

POJ 3264:Balanced Lineup(RMQ模板题)

http://poj.org/problem?id=3264 题意:给出n个数,还有q个询问,询问[l,r]区间里面最大值和最小值的差值. 思路:RMQ模板题,开两个数组维护最大值和最小值就行. 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <algorithm> 5 using namespace std; 6 #define N 50010 7 #define

POJ 3264:Balanced Lineup Rmq模板

Balanced Lineup 题目链接: http://poj.org/problem?id=3264 题意: 求区间最大值和最小值的差 题解: Rmq模板题 代码 #include<stdio.h> #include<math.h> const int N=5e4+1; int dpmax[N][17]; int dpmin[N][17]; int mmax(int x,int y) { return x>y?x:y; } int mmin(int x,int y) {

后缀数组模板一份

1 /****************** 2     by zhuyuqi      * 3     QQ:1113865149 * 4     name:2-sat    * 5                   * 6 ******************/ 7  8 using namespace std; 9 const int MAX = 1000;10 int r[MAX],*rank;11 int wa[MAX],wb[MAX],ws[MAX],wv[MAX];12 int h

静态RMQ模板题 contest 静态RMQ T2

Description Wind设计了很多机器人.但是它们都认为自己是最强的,于是,一场比赛开始了.机器人们都想知道谁是最敏捷的,于是它们进行了如下一个比赛.首先,他们面前会有一排共n个数,它们比赛看谁能最先把每连续k个数中最大和最小值写下来,当然,这些机器人运算速度都很快,它们比赛的是谁写得快.但是Wind也想知道答案,你能帮助他吗? Input 每组测试数据,第1行为n,k,第2行共n个数,为数字序列,所有数字均在longint范围内. Output 共n-k+1行 第i行为第i-i+k-1

LCA上的RMQ模板算法

How far away ? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10764    Accepted Submission(s): 3923 Problem Description There are n houses in the village and some bidirectional roads connecting

RMQ 模板题 poj 3264

题目:点这里 题意:给一个长度n的数列,然后又Q个询问,问L   到R   中最大值与最小值的差. 分析:RMQ 的模板题. 代码: #include<stdio.h> #include<iostream> #include<algorithm> #include<string.h> using namespace std; const int max_=50005; int minm,maxm; int dp_max[max_][20],dp_min[ma

RMQ 模板 2012-09-13

Program Stone; var i,j,k,l,n,m,xmi,big,sma:longint; h:array[1..50000]of longint; tf:array[0..16]of longint; max,min:array[1..50000,0..16]of longint; function wmax(a,b:longint):longint; begin if a>b then wmax:=a else wmax:=b; end; function wmin(a,b:lo

RMQ(模板)

void RMQ_max_init( int n ) { memset(dp, 0x00, sizeof(dp)); for(int i = 1; i <= n; i++) dp[i][0] = a[i]; for(int j = 1; (1<<j) <= n; j++) for(int i = 1; i+(1<<j)-1 <= n; i++) dp[i][j] = max(dp[i][j-1], dp[i+(1<<(j-1))][j-1] ); }