zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    1025 反转链表
    Vue--修饰符
    Vue--watch
    Vue--防止页面闪烁
    Vue--过滤器
    Vue--自定义指令
    Vue--生命周期
    vue--父子组件传递数据
    vue--父子组件调用彼此的方法
    Celery--beat
  • 原文地址:https://www.cnblogs.com/wolfred7464/p/3366811.html
Copyright © 2011-2022 走看看