• Balanced Lineup(线段树)


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

    题意:n个数,q个询问,输出[l,r]中最大值与最小值的差。

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <algorithm>
     4 using namespace std;
     5 const int N=1000010;
     6 struct node
     7 {
     8     int l,r;
     9     int Max,Min;
    10 } Tree[N*4];
    11 int h[N],max1=0,min1=N;
    12 void build(int l,int r,int rt)
    13 {
    14     Tree[rt].l = l;
    15     Tree[rt].r = r;
    16     if (l==r)
    17     {
    18         Tree[rt].Max=Tree[rt].Min=h[r];
    19         return ;
    20     }
    21     int mid = (l+r)>>1;
    22     build(l,mid,rt<<1);
    23     build(mid+1,r,rt<<1|1);
    24     Tree[rt].Max=max(Tree[rt<<1].Max,Tree[rt<<1|1].Max);
    25     Tree[rt].Min=min(Tree[rt<<1].Min,Tree[rt<<1|1].Min);
    26 }
    27 void Query(int l,int r,int rt)
    28 {
    29     if(Tree[rt].l==l&&Tree[rt].r==r)
    30     {
    31         max1=max(max1,Tree[rt].Max);
    32         min1=min(min1,Tree[rt].Min);
    33         return ;
    34     }
    35     int mid = (Tree[rt].l+Tree[rt].r)>>1;
    36     if (r <= mid)
    37         Query(l,r,rt<<1);
    38     else if (l > mid)
    39         Query(l,r,rt<<1|1);
    40     else
    41     {
    42         Query(l,mid,rt<<1);
    43         Query(mid+1,r,rt<<1|1);
    44     }
    45 }
    46 int main()
    47 {
    48     int n,q;
    49     while(~scanf("%d%d",&n,&q))
    50     {
    51         for (int i = 1; i <= n; i++)
    52             scanf("%d",&h[i]);
    53         build(1,n,1);
    54         while(q--)
    55         {
    56             max1=-1,min1=N;
    57             int l,r;
    58             scanf("%d%d",&l,&r);
    59             Query(l,r,1);
    60             printf("%d
    ",max1-min1);
    61         }
    62     }
    63     return 0;
    64 }
    View Code
  • 相关阅读:
    跨域问题注解解决
    跳出循环到指定位置
    idea model管理
    maven 取本地jar
    注解 元注解
    手动打jar包到maven
    sonar搭建
    jmockit、junit
    注解
    虚拟机指令
  • 原文地址:https://www.cnblogs.com/lahblogs/p/3557433.html
Copyright © 2020-2023  润新知