刚开始还觉得有点怪怪的。因为想着如果每个树只是单纯地记录它所在的区间的话会不会有不在区间内的数据给更新了,但是我好像是傻掉了因为如果有这种情况出现的话在父亲节点就会分成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;
}

用一下结构体~

最新文章

  1. 【Java每日一题】20161013
  2. 记录一次冷备恢复遇到的 ORA-00304问题
  3. [liu yanling]测试用例作用
  4. Mac os下安装pycurl
  5. 【转】深入理解Java内存模型(四)——volatile
  6. mount USB Device(U disk) on crux based on vmware
  7. html5储存篇(二)
  8. 圖片裁剪大頭貼功能 - ASP.NET WebForm + jQuery + imgAreaSelect
  9. Linux 命令练习
  10. 赢在面试之Java泛型篇(十二)
  11. MYCP作业
  12. Java程序设计的第一次作业1
  13. 关于chrome插件编写的小结
  14. [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 数据在mysq和hdfs之间的相互转换
  15. thinkphp结合layui上传视频
  16. 解决 php 报错 open_basedir restriction in effect或者nginx提示No input file specified怎么办
  17. Netty核心概念(7)之Java线程池
  18. 团队项目个人进展——Day04
  19. JavaScript基础之数据类型部分总结
  20. g711u与g729比较编码格式

热门文章

  1. 使用BootstrapVue相关组件,构建Vue项目界面
  2. java后端知识点梳理——MySQL
  3. Mybatis映射文件中的参数传递
  4. jsp中basa标签的使用
  5. 「题解」POI2005 AKC-Special Forces Manoeuvres
  6. 排查bug:竟然是同事把Redis用成这鬼样子,坑了我
  7. Waymo object detect 2D解决方案论文拓展
  8. 「10.29」数列(exgxd)&#183;数对(线段树优化DP)&#183;最小距离(最短路,树上直径思想)
  9. system表空间
  10. 回顾Games101图形学(一)几何变换中一些公式的推导