zoukankan      html  css  js  c++  java
  • poj 3264

    题意:给你一组值,然后询问某个区间的最大值和最小值之差
    分析:因为没有更新,所以只需要查找即可,节点保存一个最大值最小值就行了
    #include<iostream>
    #include<algorithm>
    #include<stdio.h>
    #include<string.h>
    #include<ctype.h>
    #include<queue>
    #include<stack>
    #include<math.h>
    #include<vector>
    #include<stdlib.h>
    using namespace std;
    #define INF 0xfffffff
    
    #define Lson rt<<1
    #define Rson rt<<1|1
    #define N 50010
    struct node
    {
        int L, R, mid;
        int x, y;
    }a[N<<2];
    int Max, Min, b[N];
    void buildsegtree(int rt, int L, int R);
    void query(int rt, int L, int R);
    
    int main()
    {
        int n, m, i, j;
        scanf("%d%d", &n, &m);
    
        for(int k=1; k<=n; k++)
            scanf("%d", &b[k]);
    
        buildsegtree(1, 1, n);
    
        while(m--)
        {
            Max=-INF; Min=INF;
            scanf("%d%d", &i, &j);
            query(1, i, j);
            printf("%d
    ", Max-Min);
        }
    }
    
    void buildsegtree(int rt, int L, int R)
    {
        a[rt].L=L;
        a[rt].R=R;
        a[rt].mid=(L+R)>>1;
    
        if(L==R)
        {
            a[rt].x=a[rt].y=b[L];
            return;
        }
    
        buildsegtree(Lson, L, a[rt].mid);
        buildsegtree(Rson, a[rt].mid+1, R);
        a[rt].x=min(a[Lson].x, a[Rson].x);
        a[rt].y=max(a[Lson].y, a[Rson].y);
    }
    
    void query(int rt, int L, int R)
    {
        if(a[rt].L==L&&a[rt].R==R)
        {
            Max=max(a[rt].y, Max);
            Min=min(a[rt].x, Min);
    
            return;
        }
    
        if(R<=a[rt].mid)
            query(Lson, L, R);
        else if(a[rt].mid<L)
            query(Rson, L, R);
        else
        {
            query(Lson, L, a[rt].mid);
            query(Rson, a[rt].mid+1, R);
        }
    }
  • 相关阅读:
    TweenMax 前台脚本库
    如何使用CSS Sprites技术进行图片合并
    QQ群开放接口
    使用 Hexo 生成一套静态博客网页
    把表插入数据库
    WCF
    SOA
    登录验证
    登录菜单权限验证
    GetJsonByDataTable
  • 原文地址:https://www.cnblogs.com/wazqWAZQ1/p/4744442.html
Copyright © 2011-2022 走看看