刚开始还觉得有点怪怪的。因为想着如果每个树只是单纯地记录它所在的区间的话会不会有不在区间内的数据给更新了,但是我好像是傻掉了因为如果有这种情况出现的话在父亲节点就会分成l,mid和mid+1,r两个区间查找,当节点区间和查找的区间完全吻合时就ok了。

这道题没有修改,连懒标记都不需要,是一道实打实的板子我却浪费了这么长时间我恨我自己

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<ctype.h>
#include<cstring>
using namespace std; const int maxn=50005;
inline int read()
{
int x=0,w=0;char c=getchar();
while(!isdigit(c))w|=c=='-',c=getchar();
while(isdigit(c))x=(x<<3)+(x<<1)+(c^48),c=getchar();
return w?-x:x;
}
struct SegmentTree
{
struct Node{
int l,r;
int mx,mn;
int tagmx,tagmn;
}e[4*maxn];
#define ls (ro<<1)
#define rs (ro<<1|1)
#define INF 0x3f3f3f3f int maxx,minn;
int n,m;
void build(int ro,int l,int r)
{
e[ro].l=l,e[ro].r=r;
e[ro].mn=INF,e[ro].mx=-INF;
if(l==r)return ;
int mid=(l+r)>>1;
build(ls,l,mid);
build(rs,mid+1,r);
}
void insert(int ro,int i,int k)
{
if(e[ro].l==e[ro].r){
e[ro].mx=e[ro].mn=k;return;
}
e[ro].mn=min(e[ro].mn,k);
e[ro].mx=max(e[ro].mx,k);
int mid=(e[ro].l+e[ro].r)>>1;
if(i<=mid)insert(ls,i,k);
else insert(rs,i,k);
}
void query(int ro,int l,int r)
{
if(e[ro].mn>=minn and e[ro].mx<=maxx)return ;
if(e[ro].l==l and e[ro].r==r){
minn=min(minn,e[ro].mn);
maxx=max(maxx,e[ro].mx);
return;
}
int mid=(e[ro].l+e[ro].r)>>1;
if(r<=mid)query(ls,l,r);
else if(l>mid)query(rs,l,r);
else {query(ls,l,mid);query(rs,mid+1,r);}
}
inline void getans()
{
n=read();m=read();
build(1,1,n);
for(int i=1;i<=n;i++)
insert(1,i,read());
for(int i=1;i<=m;i++)
{
maxx=-INF,minn=INF;
int l=read(),r=read();
query(1,l,r);
printf("%d\n",maxx-minn);
}
return ;
}
#undef ls
#undef rs
#undef INF
}st;
int main()
{
st.getans();
return 0;
}

用一下结构体~

POJ3264线段树求最值的更多相关文章

  1. HDU1832 二维线段树求最值(模板)

    Luck and Love Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...

  2. poj2823Sliding Window(线段树求最值)

    链接 裸线段树 这题时间卡的挺棒 #include <iostream> #include<cstdio> #include<cstring> #include&l ...

  3. 2016年湖南省第十二届大学生计算机程序设计竞赛---Parenthesis(线段树求区间最值)

    原题链接 http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 Description Bobo has a balanced parenthes ...

  4. xdoj-1324 (区间离散化-线段树求区间最值)

    思想 : 1 优化:题意是覆盖点,将区间看成 (l,r)转化为( l-1,r) 覆盖区间 2 核心:dp[i]  覆盖从1到i区间的最小花费 dp[a[i].r]=min (dp[k])+a[i]s; ...

  5. hdu 1754 I Hate It (线段树求区间最值)

    HDU1754 I Hate It Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u D ...

  6. 4163 hzwer与逆序对 (codevs + 权值线段树 + 求逆序对)

    题目链接:http://codevs.cn/problem/4163/ 题目:

  7. HDU6447 YJJ's Salesman-2018CCPC网络赛-线段树求区间最值+离散化+dp

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门  原题目描述在最下面.  1e5个点,问 ...

  8. 【bzoj4695】最假女选手 线段树区间最值操作

    题目描述 给定一个长度为 N 序列,编号从 1 到 N .要求支持下面几种操作:1.给一个区间[L,R] 加上一个数x 2.把一个区间[L,R] 里小于x 的数变成x 3.把一个区间[L,R] 里大于 ...

  9. 【hdu5306】Gorgeous Sequence 线段树区间最值操作

    题目描述 给你一个序列,支持三种操作: $0\ x\ y\ t$ :将 $[x,y]$ 内大于 $t$ 的数变为 $t$ :$1\ x\ y$ :求 $[x,y]$ 内所有数的最大值:$2\ x\ y ...

随机推荐

  1. 菜鸟刷题路(随缘刷题):leetcode88

    lc88 class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int i = m - 1, j = ...

  2. pytest 给用例打标签

    1.给用例添加自定义标签命令:@pytest.mark.tagname     #tagname是自定义的标签名 import pytest class TestClass(): @pytest.ma ...

  3. 02:database 配置(可能出现严格模式配置问题)

    DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'day42', 'USER': 'root', 'P ...

  4. Linux shell是什么

    shell概念: shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell启动,挂起,停止甚至编写一些程序. shell还是一个功能强 ...

  5. SQLLite数据库

    SQLite数据库简介 一个小时内学习SQLite数据库 SQLite 教程 创建表: 1 sqlite> CREATE TABLE person (id INTEGER PRIMARY KEY ...

  6. 头条面试题:判断一个数是否是happy number(每一位的平方和最终为1)

    朋友面试头条二轮了,一轮的题目请看这一篇:头条面试题:求用户在线峰值和持续时间 这次的面试题目是:判断一个数是否是happy number(每一位的平方和最终为1) 知道题目首先要理解题目.所谓hap ...

  7. C# 小知识点记录

    1.当计算数据有小数点时不要使用float和double类型的数据,使用这两个会计算不准确.使用decimal 2.如果使用decimal计算数据,遇到除不进的数据有很多小数点的时候,在计算结果后面接 ...

  8. AcWing 1273. 天才的记忆

    从前有个人名叫 WNB,他有着天才般的记忆力,他珍藏了许多许多的宝藏. 在他离世之后留给后人一个难题(专门考验记忆力的啊!),如果谁能轻松回答出这个问题,便可以继承他的宝藏. 题目是这样的:给你一大串 ...

  9. RNA

    原始地球 你会想,我们每一个细胞中都有一个遗传分子叫做DNA?那么,DNA之前有没有什么遗传分子呢?我的答案是:"有".在远古地球,那个海底有无数火山,喷发的火山口两侧都是喷涌出的 ...

  10. CentOS-Docker搭建Nacos-v1.1.4(单点)

    通用属性配置(v1.1.4) name description option MODE cluster模式/standalone模式 cluster/standalone default cluste ...