zoukankan      html  css  js  c++  java
  • POJ 3264 线段树 基础入门

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

    求区间内最大值最小值的差

    minv[]维护最小值

    maxv[]维护最大值

     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 
     5 #define lson l , m , rt<<1
     6 #define rson m+1 , r , rt<<1|1
     7 #define MAXN 50010
     8 
     9 int minv[MAXN<<2],maxv[MAXN<<2];
    10 int n,q,_min,_max;
    11 
    12 
    13 void pushup(int rt)
    14 {
    15     minv[rt] = min(minv[rt<<1] , minv[rt<<1|1]);
    16     maxv[rt] = max(maxv[rt<<1] , maxv[rt<<1|1]);
    17 }
    18 
    19 
    20 void build(int l,int r,int rt)
    21 {
    22     if(l == r)
    23     {
    24         scanf("%d",&minv[rt]);
    25         maxv[rt] = minv[rt];
    26         return ;
    27     }
    28     int m = (l+r) >> 1;
    29     build(lson);
    30     build(rson);
    31     pushup(rt);
    32 }
    33 
    34 
    35 void query(int L,int R,int l,int r,int rt)
    36 {
    37     if(L<=l && r<=R)
    38     {
    39         _min = min(_min , minv[rt]);
    40         _max = max(_max , maxv[rt]);
    41     }
    42     else
    43     {
    44         int m = (l+r) >> 1;
    45         if(L <= m) query(L,R,lson);
    46         if(R > m) query(L,R,rson);
    47     }
    48 }
    49 
    50 
    51 void work()
    52 {
    53     int a,b;
    54     for(int i=0 ; i<q ; i++)
    55     {
    56         scanf("%d%d",&a,&b);
    57         _max = 0;
    58         _min = 2e9;
    59         query(a,b,1,n,1);
    60         printf("%d
    ",_max-_min);
    61     }
    62 }
    63 
    64 
    65 void init()
    66 {
    67     scanf("%d%d",&n,&q);
    68     build(1,n,1);
    69 }
    70 
    71 
    72 int main()
    73 {
    74     init();
    75     work();
    76     return 0;
    77 }
    View Code


    线段树学习http://www.notonlysuccess.com/index.php/segment-tree-complete/

  • 相关阅读:
    欧拉定理证明&阶乘的逆元
    Tree POJ
    GCD
    java42
    java41
    java
    java40
    搭建两个网站的琐碎问题
    虚拟机从无到有,服务器从无到有的历程(在更)
    java39
  • 原文地址:https://www.cnblogs.com/cshhr/p/3602023.html
Copyright © 2011-2022 走看看