• POJ 3264 Balanced Lineup 简单RMQ


    题目:http://poj.org/problem?id=3264

    给定一段区间,求其中最大值与最小值的差。

     1 #include <stdio.h>
     2 #include <algorithm>
     3 #include <math.h>
     4 
     5 int dpMin[50010][31], dpMax[50010][31];
     6 
     7 int RMinQ(int l, int r)
     8 {
     9     int k = log(1.0 * r-l+1)/log(2.0);
    10     return std::min(dpMin[l][k], dpMin[r-(1<<k)+1][k]);
    11 }
    12 
    13 int RMaxQ(int l, int r)
    14 {
    15     int k = log(1.0 * r-l+1)/log(2.0);
    16     return std::max(dpMax[l][k], dpMax[r-(1<<k)+1][k]);
    17 }
    18 
    19 int main()
    20 {
    21     int n, m;
    22     scanf("%d %d", &n, &m);
    23     for(int i = 1; i <= n; i++)
    24     {
    25         scanf("%d", &dpMin[i][0]);
    26         dpMax[i][0] = dpMin[i][0];
    27     }
    28     for(int j = 1; (1<<j) <= n; j++)
    29     {
    30         for(int i = 0; i + (1<<j) - 1 <= n; i++)
    31         {
    32             dpMax[i][j] = std::max(dpMax[i][j-1], dpMax[i+(1<<(j-1))][j-1]);
    33             dpMin[i][j] = std::min(dpMin[i][j-1], dpMin[i+(1<<(j-1))][j-1]);
    34         }
    35     }
    36     int x, y;
    37     while(m--)
    38     {
    39         scanf("%d %d", &x, &y);
    40         printf("%d
    ", RMaxQ(x, y) - RMinQ(x, y));
    41     }
    42     return 0;
    43 }
    View Code
  • 相关阅读:
    request和response使用
    oracle_to_char
    oracl_LTRIM_RITRIM
    convert
    jdbc
    oracle_trunc
    [python]glob模块中的glob()函数为什么返回空列表??
    win10 anaconda+tensorflow+keras
    Golang学习:sublime text3配置golang环境
    2018/12/05学习笔记
  • 原文地址:https://www.cnblogs.com/wolfred7464/p/3366811.html
Copyright © 2020-2023  润新知