再次理解线段树。比第一次又有了更深刻的认识,虽然还不能完全靠自己写出来,但自己慢慢的去摸索,一定能慢慢理解那个套路了。加油,拿下线段树。

同时,推荐北大郭炜讲的线段树。

poj3264

#include <iostream>#include <algorithm>#include <numeric>

using namespace std;#define MY_MIN 99999999#define MY_MAX -99999999struct CNode{int L,R;int nMin,nMax;    CNode *pLeft,*pRight;};

int min ( const int a, const int b ) {return (b<a)?b:a;     }int max ( const int a, const int b ) {return (b<a)?a:b;  }

int nMax,nMin; //用于记录最大值和最小值CNode Tree[1000000]; //一般为叶子节点的两倍int nCount=0; //总节点数

void Build(CNode *pRoot,int L,int R){//建线段树

  pRoot->L=L;pRoot->R=R;  pRoot->nMin=MY_MIN;pRoot->nMax=MY_MAX;if(L!=R){     nCount++;     pRoot->pLeft=Tree+nCount;     nCount++;     pRoot->pRight=Tree+nCount;     Build(pRoot->pLeft,L,(L+R)/2);     Build(pRoot->pRight,(L+R)/2+1,R);  } }

void Insert(CNode *pRoot,int i,int v){//将第i个数(其值为v)插入到线段树中    if(pRoot->L==i && pRoot->R==i){        pRoot->nMin=pRoot->nMax=v;return;    }    pRoot->nMax=max(pRoot->nMax,v);    pRoot->nMin=min(pRoot->nMin,v);if(i<=(pRoot->R+pRoot->L)/2){       Insert(pRoot->pLeft,i,v);    }else{       Insert(pRoot->pRight,i,v);    }}

void Query(CNode *pRoot,int L,int R){if( pRoot->nMin>= nMin && pRoot->nMax <= nMax)  //这没理解到。哎。        return;if(pRoot->L==L && pRoot->R==R)    {       nMax=max(pRoot->nMax,nMax);  //这当时也没注意到要用函数。       nMin=min(pRoot->nMin,nMin); return;    }else if(R<=(pRoot->R+pRoot->L)/2){         Query(pRoot->pLeft,L,R);    }else if(L>=(pRoot->R+pRoot->L)/2+1){        Query(pRoot->pRight,L,R);    }else{       Query(pRoot->pLeft,L,(pRoot->R+pRoot->L)/2);       Query(pRoot->pRight,(pRoot->R+pRoot->L)/2+1,R);    }}

int main(){int m,n,x,y;int v,i;    scanf("%d %d",&m,&n);    Build(Tree,1,m);for(i=1;i<=m;i++){        scanf("%d",&v);        Insert(Tree,i,v);    }for(i=1;i<=n;i++){       scanf("%d%d",&x,&y);       nMax = MY_MAX;       nMin = MY_MIN;       Query(Tree,x,y);       printf("%d\n",nMax-nMin);    }return 0;}

转载于:https://www.cnblogs.com/Jason-Damon/archive/2012/02/21/2361937.html

poj3264 线段树相关推荐

  1. POJ3264[线段树]

    就是说有一个序列长度为n,q次询问,询问区间内最大值与最小值的差 可以说是经典的线段树板子题.. 第一次写线段树,有些漏洞请大家及时提出. 线段树大概就是将元素分配,蒟蒻语文不好,大家请看图 [图片来 ...

  2. POJ3264 Balanced Lineup【线段树】

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 63040   Accepted: 29405 ...

  3. POJ3264——Balanced Lineup(线段树)

    本文出自:http://blog.csdn.net/svitter 题意:在1~200,000个数中.取一段区间.然后在区间中找出最大的数和最小的数字.求这两个数字的差. 分析:按区间取值,非常明显使 ...

  4. poj 3264 Balanced Lineup RMQ问题 线段树

    For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One d ...

  5. 二逼平衡树——树套树(线段树套Splay平衡树)

    题面 Bzoj3196 解析 线段树和Splay两棵树套在一起,常数直逼inf,但最终侥幸过了 思路还是比较简单, 在原数组维护一个下标线段树,再在每一个线段树节点,维护一个对应区间的权值Splay. ...

  6. 线段树——HDU - 1698

    题目含义 就是初始化一堆数为1 可以经过操作把一个区间的数都改变 并求这堆数的总大小 题目分析 有一个 #include<iostream> #include<stdio.h> ...

  7. BZOJ.1558.[JSOI2009]等差数列(线段树 差分)

    BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...

  8. 【线段树分治 线性基】luoguP3733 [HAOI2017]八纵八横

    不知道为什么bzoj没有HAOI2017 题目描述 Anihc国有n个城市,这n个城市从1~n编号,1号城市为首都.城市间初始时有m条高速公路,每条高速公路都有一个非负整数的经济影响因子,每条高速公路 ...

  9. [bzoj1582][Usaco2009 Hol]Holiday Painting 节日画画_线段树

    Holiday Painting 节日画画 bzoj-1582 Usaco-2009 Hol 题目大意:给定两个n*m的01网格图.q次操作,每次将第二个网格图的子矩阵全部变成0或1,问每一次操作后两 ...

最新文章

  1. 由laravel 5.5无法获取url中的参数引发的apache的.htaccess文件问题
  2. 实践篇:利用函数计算轻松构建全文检索系统
  3. SQL语句使用大全,最常用的sql语句
  4. C++:如何更改visual studio 2017的主题颜色?
  5. 基于深度学习的咖啡叶病害识别和严重程度评估(源代码+数据集)
  6. java路径在那_Java 路径
  7. 10.一文了解JAVA反射超详尽知乎
  8. iOS 算法的前世今生:算法原理、常用算法(二)加密算法
  9. AI智能电话机器人源码搭建原理及步骤
  10. C# 中取绝对值的函数
  11. linux 命令 dd 详解
  12. 大数据在人力资源管理当中的应用
  13. SpringCloud Gateway堆外内存溢出排查
  14. 618终极剁手攻略,收割全套数据分析师课程!
  15. 甘特图:项目进度管理的必备工具
  16. 笔试题33——双队列解决全排列拼接问题
  17. 方案怎么写,才能打动客户?哪些内容才是客户眼中的干货?
  18. 关于中国电信、中国联通5G网络的几点思考
  19. Linux下数据盘挂载、分区、卸载
  20. 【wxwidgets】

热门文章

  1. .NET C#语言基础 20140814
  2. 机器人产业一定有美好未来
  3. Python程序设计之迭代器和生成器示例
  4. 计算机技术在职研究生学校,计算机技术在职研究生招生2020
  5. 028_jQuery数据
  6. 008_html属性
  7. nacos 环境切换_Nacos多环境配置
  8. php扩展-ioncube组件的安装方法_Windows系统PHPStudy Web环境安装ionCube扩展软件
  9. r语言electricity数据集_R语言学习-数据集
  10. python的celery的面试_python 面试