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

初学线段可以做的水题,也是线段树的基础运用。也是我的第一个线段树的题。

题意:在区间范围内的最大值减去最小值

思路:线段树记录下每个区间内的最大值以及最小值,然后查询。

我也是第一次做,然后耗时比较多。

 #include <stdio.h>
#include <string.h>
#define maxn 500500 int max(int x,int y)
{
return x > y? x : y ;
}
int min(int x,int y)
{
return x > y? y : x;
} struct note{ int Min,Max; }segtree[ maxn * ]; int arra[ maxn ]; void build(int root , int arr[] , int instart , int iend)
{
if(instart == iend)
{
// segtree[ root ].val = arr[ instart ];
segtree[ root ].Max = arr[ instart ];
segtree[ root ].Min = arr[ instart ];
}
else
{
int mid = (instart+iend)/;
build( root * , arr , instart , mid );
build( root * + , arr , mid + , iend );
segtree[ root ].Max = max(segtree[ root * ].Max,segtree[ root * + ].Max);
segtree[ root ].Min = min(segtree[ root * ].Min,segtree[ root * + ].Min);
}
} int remin(int root ,int nstart , int nend , int qstart , int qend)
{
if(qstart > nend || qend < nstart)
return maxn*;
if( qstart <= nstart && qend >= nend )
return segtree[ root ].Min;
int mid =( nstart + nend ) / ;
return min(remin(root * ,nstart,mid,qstart,qend),
remin(root * + , mid + , nend , qstart , qend ));
}
int reMax(int root , int nstart , int nend , int qstart , int qend)
{
if(qstart > nend || qend < nstart)
return ;
if(qstart <= nstart && qend >= nend )
return segtree [ root ].Max;
int mid = ( nstart + nend ) / ;
return max(reMax(root * , nstart , mid , qstart , qend ),
reMax(root * + , mid + , nend , qstart , qend ) );
} int main()
{
// freopen("in.txt","r",stdin);
int m,n,a,b,ma,mi;
scanf("%d%d",&m,&n);
for( int i = ; i <= m ; i++ )
scanf("%d",&arra[ i ]);
build(,arra,,m);
while(n--)
{
scanf("%d%d",&a,&b);
ma = reMax(,,m,a,b);
mi = remin(,,m,a,b);
printf("%d\n",ma-mi);
}
return ;
}

poj 3264(线段树)的更多相关文章

  1. POJ——3264线段树

    题目: 输入两个数(m,n),m表示牛的头数,n表示查询的个数.查询时输入两个数(x,y),表示查询范围的起始值和终止值,查询结果是,这个区间内牛重量的最大值减去牛重量的最小值,数量级为1000,00 ...

  2. poj 3264 线段树 求区间最大最小值

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

  3. POJ - 3264 线段树模板题 询问区间最大最小值

    这是线段树的一个模板题,给出一串数字,然后询问区间的最大最小值. 这个其实很好办,只需把线段树的节点给出两个权值,一个是区间的最小值,一个是区间的最大值,初始化为负无穷和正无穷,然后通过不断地输入节点 ...

  4. POJ 3264 线段树入门解题报告

    题意:给n个值, Q次询问, 每次询问给定一个区间, 要求输出该区间最大最小值之差 思路:暴力的话每次询问都要遍历多次for循环一定会超时, 用线段树记录区间的信息(左边界右边界, 该区间最大值最小值 ...

  5. poj 3264 线段树

    题目意思:给定Q(1<=Q<=200000)个数A1,A2,```,AQ, 多次求任一区间Ai-Aj中最大数和最小数的差 线段树太弱了,题目逼格一高连代码都读不懂,今天开始重刷线段树,每天 ...

  6. POJ 3264 线段树 ST

    题意:给你一个数列,从中挑一段,问你这段数的最大值减最小值是多少. 思路:线段树. // by Sirius_Ren #include <cstdio> #include <algo ...

  7. G - Balanced Lineup POJ - 3264 线段树最大最小值区间查询模版题

    题意 给出一个序列  每次查询区间的max-min是多少 思路:直接维护max 和min即可  写两个query分别查最大最小值 #include<cstdio> #include< ...

  8. poj 2886 线段树+反素数

    Who Gets the Most Candies? Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 12744   Acc ...

  9. poj 3468(线段树)

    http://poj.org/problem?id=3468 题意:给n个数字,从A1 …………An m次命令,Q是查询,查询a到b的区间和,c是更新,从a到b每个值都增加x.思路:这是一个很明显的线 ...

  10. POJ 2828 线段树(想法)

    Buy Tickets Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 15422   Accepted: 7684 Desc ...

随机推荐

  1. Python学习Day2笔记(集合和文件操作)

    1.集合的使用 列表是有序的可包含重复内容的 集合是无序的不可包含重复内容的 1) 集合关系测试 #列表去重list_1=[1,4,5,6,7,8,9,7,5,4,23,2] #有重复数据 list_ ...

  2. VIM编辑器简单总结

    第一讲小结  1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键.         h (左移)       j (下行)       k (上行)     l (右移)  2. ...

  3. ipad

    1. ipad pro 与 ipad air2 时间已经是2016.12.9, 苹果还没有推出新的ipad产品,有些纠结于哪款更适合自己,总结下产品不易获取的核心配置信息 ipad air2 ram ...

  4. 配置windows 系统PHP系统环境变量

    1. 首先到php官网下载php-5.3.6-nts-Win32-VC9-x86.ZIP 解压到电脑硬盘.将文件解压到文件夹php5.3.6下载地址:http://www.php.net/downlo ...

  5. C++ 顺序容器基础知识总结

    0.前言 本文简单地总结了STL的顺序容器的知识点.文中并不涉及具体的实现技巧,对于细节的东西也没有提及.一来不同的标准库有着不同的实现,二来关于具体实现<STL源码剖析>已经展示得全面细 ...

  6. a版本冲刺第二天

    队名:Aruba   队员: 黄辉昌 李陈辉 林炳锋 鄢继仁 张秀锋 章  鼎 学号 昨天完成的任务 今天做的任务 明天要做的任务 困难点 体会 408 学习测试文档的编写 看了构建之法的第二章和十三 ...

  7. Java面试之SpringMVC总结以及在面试中的一些问题.

    1.简单的谈一下SpringMVC的工作流程? 流程 1.用户发送请求至前端控制器DispatcherServlet 2.DispatcherServlet收到请求调用HandlerMapping处理 ...

  8. Angular.js实现折叠按钮的经典指令.

    var expanderModule=angular.module('expanderModule',[]) expanderModule.directive('expander',function( ...

  9. 网络基础之IPv4、网线、

    =========================================Internet是一个圈子,进去这个圈子就要有相应的身份,就像我们去篮球场打球,首先得是个"人"才 ...

  10. 11月6日下午PHP分页查询(查询结果也显示为分页)

    1.先把数据库里所有的数据分页显示在页面,并在显示数据的表格上方加上查询表单. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...