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. rpc框架之avro 学习 1 - hello world

    avro是hadoop的一个子项目,提供的功能与thrift.Protocol Buffer类似,都支持二进制高效序列化,也自带RPC机制,但是avro使用起来更简单,无需象thrift那样生成目标语 ...

  2. 你可能不知道的 NaN 以及 underscore 1.8.3 _.isNaN 的一个 BUG

    这篇文章并不在我的 underscore 源码解读计划中,直到 @pod4g 同学回复了我的 issue(详见 https://github.com/hanzichi/underscore-analy ...

  3. 前端数据可视化echarts.js使用指南

    一.开篇 首先这里要感谢一下我的公司,因为公司需求上面的新颖(奇葩)的需求,让我有幸可以学习到一些好玩有趣的前端技术,前端技术中好玩而且比较实用的我想应该要数前端的数据可视化这一方面,目前市面上的数据 ...

  4. python基础-牛逼的三层循环,实现想在那里退出,就在那里退出。

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige tag=True #设置tag控制他,只要一输入Flash就退出整个循环 wh ...

  5. (转)C#为什么要使用Invoke,它和BeginInvoke有什么区别

    在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate. 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是do ...

  6. linux-ntpdate同步更新时间

    Linux服务器运行久时,系统时间就会存在一定的误差,一般情况下可以使用date命令进行时间设置,但在做数据库集群分片等操作时对多台机器的时间差是有要求的,此时就需要使用ntpdate进行时间同步 安 ...

  7. Advanced Office Password Recovery安装后显示是英文版的

    一些才开始接触Advanced Office Password Recovery(即AOPR)的朋友,在安装Advanced Office Password Recovery的时候可能发现Advanc ...

  8. 动态树之LCT(link-cut tree)讲解

    动态树是一类要求维护森林的连通性的题的总称,这类问题要求维护某个点到根的某些数据,支持树的切分,合并,以及对子树的某些操作.其中解决这一问题的某些简化版(不包括对子树的操作)的基础数据结构就是LCT( ...

  9. Publishing failed with multiple errors 异常

    Publishing failed with multiple errors 在使用eclipse发布项目时不能自动生成class文件,且无法启动调试的Tomcat服务.启动过程提示 以上 异常 解决 ...

  10. iOS获取设备唯一标识的8种方法

    8种iOS获取设备唯一标识的方法,希望对大家有用. UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可 ...