线段树还真有点难写。。。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stack>
#include <queue> using namespace std;
typedef long long LL;
#define oo 0x3f3f3f3f
#define N 200100 struct node
{
int l, r;
int s, e;
} tree[N*4]; int A[N]; void build(int l, int r, int rt)
{
tree[rt].l=l;
tree[rt].r=r;
if(l==r)
{
tree[rt].s=tree[rt].e=A[l];
return ;
}
int mid;
mid=(l+r)/2;
build(l, mid, rt*2);
build(mid+1, r, rt*2+1);
tree[rt].s=max(tree[rt*2].s, tree[rt*2+1].s);
tree[rt].e=min(tree[rt*2].e, tree[rt*2+1].e); return ;
} int query(int l, int r, int rt)
{
if(tree[rt].l>=l&&tree[rt].r<=r)
{
return tree[rt].s;
}
int mid=(tree[rt].l+tree[rt].r)/2;
if(r<=mid) return query(l, r, rt*2);
else if(l>mid) return query(l, r, rt*2+1);
else
{
return max(query(l, mid, rt*2), query(mid+1, r, rt*2+1));
}
} int Query(int l, int r, int rt)
{
if(tree[rt].l>=l&&tree[rt].r<=r)
{
return tree[rt].e;
}
int mid=(tree[rt].l+tree[rt].r)/2;
if(r<=mid) return Query(l, r, rt*2);
else if(l>mid) return Query(l, r, rt*2+1);
else
{
return min(Query(l, mid, rt*2), Query(mid+1, r, rt*2+1));
}
} int main()
{
int n, m, a, b; while(~scanf("%d%d", &n, &m))
{
for(int i=1; i<=n; i++)
scanf("%d", &A[i]);
build(1, n, 1); while(m--)
{
scanf("%d%d", &a, &b);
printf("%d\n", query(a, b, 1)-Query(a, b, 1));
}
}
return 0;
}

poj 3246 简单线段树的更多相关文章

  1. POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化)

    POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化) 题意分析 前置技能 线段树求逆序对 离散化 线段树求逆序对已经说过了,具体方法请看这里 离散化 有些数 ...

  2. Buy Tickets POJ - 2828 思维+线段树

    Buy Tickets POJ - 2828 思维+线段树 题意 是说有n个人买票,但是呢这n个人都会去插队,问最后的队列是什么情况.插队的输入是两个数,第一个是前面有多少人,第二个是这个人的编号,最 ...

  3. poj 3225 【线段树】

    poj 3225 这题是用线段树解决区间问题,看了两天多,算是理解一点了. Description LogLoader, Inc. is a company specialized in provid ...

  4. poj 3264(线段树)

    http://poj.org/problem?id=3264 初学线段可以做的水题,也是线段树的基础运用.也是我的第一个线段树的题. 题意:在区间范围内的最大值减去最小值 思路:线段树记录下每个区间内 ...

  5. poj City Horizon (线段树+二分离散)

    http://poj.org/problem?id=3277 City Horizon Time Limit: 2000MS   Memory Limit: 65536K Total Submissi ...

  6. poj 3667 Hotel (线段树)

    http://poj.org/problem?id=3667 Hotel Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 94 ...

  7. HDOJ-1754(简单线段树)

    最近开始重新学习线段树,先从最简单的开始吧! I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 ...

  8. J - Assign the task - hdu 3974(DFS建树+简单线段树)

    题意:给一些节点简单额对应关系,可以组成一个树,如果树的某一个节点更新那么他的所有子节点都要更新,中间,会有一些查询 分析:题意倒也不难理解,但是但是不知道怎么建树...于是自能百度,看了kuangb ...

  9. hdu1556 Color the ball 简单线段树

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1556 简单的线段树的应用 直接贴代码了: 代码: #include<iostream> # ...

  10. HihoCoder1070 区间最小值(简单线段树)

    个测试点(输入文件)有且仅有一组测试数据. 每组测试数据的第1行为一个整数N,意义如前文所述. 每组测试数据的第2行为N个整数,分别描述每种商品的重量,其中第i个整数表示标号为i的商品的重量weigh ...

随机推荐

  1. SpringBoot-Validation优雅实现参数校验

    1.是什么? 它简化了 Java Bean Validation 的集成.Java Bean Validation 通过 JSR 380,也称为 Bean Validation 2.0,是一种标准化的 ...

  2. 研发提效必备技能:手把手教你基于Docker搭建Maven私服仓库

    沉淀,成长,突破,帮助他人,成就自我. 大家好,我是冰河~~ 在研发的过程中,很多企业都会针对自身业务特点来定制研发一些工具类库,但是这些工具类库又不会对外公开,那如何在组织内部共享这些类库呢?一种很 ...

  3. 【Python】【OpenCV】定位二维码

    相较于BarCode,QRCode有明显的特征区域,也就是左上角.右上角.左下角三个"回"字区域,得益于hierarchy中,父子关系的轮廓是连续的(下标),所以这个时候我们就可以 ...

  4. 前端 Git 使用约定

    前端 Git 使用约定 背景 开发前端项目,有以下困惑: 使用哪个分支开发,哪个分支发布 修复线上bug的流程是什么,如何避免修复完了下次却又出现了 cms分支有十多个,是否都有用 如何快速找到之前某 ...

  5. 如何清理Docker不用的Volume

    有一句老话叫:书到用时方恨少. 其实电脑的内存空间也是非常宝贵,特别是MacOS下的docker可以分配的空间更是寸土寸金. 在21年的时候我也遇到过类似的问题,当时的经历记录在这篇博客:https: ...

  6. Python——第二章:range()的用法:

    在Python中,range()是一个内置函数,用于生成一个整数序列,通常用于循环遍历.以下是range()函数的一些常见用法: range(n): 从0数到n. 不包含nrange(m, n): 从 ...

  7. Config:Spring Cloud分布式配置组件

    Config:Spring Cloud分布式配置组件 问题总结 Config? Config工作原理? Config 的特点? Config+Bus 实现配置的动态刷新? 问题答案 Config Co ...

  8. Java通过SSH连接路由器,输入命令并读取响应

    最近需要读取和修改华为路由器的配置,使用Java语言开发,通过SSH连接,输入命令并读取响应. 1.添加mwiede/jsch依赖 如果使用Maven,可以在pom.xml文件中添加以下依赖: < ...

  9. BlockCanary原理解析

    一.背景 为了解决应卡顿,分析耗时. 二.原理 Looper中的loop方法: public static void loop() { ... for (;;) { ... // This must ...

  10. Java 给PPT中的表格设置分布行和分布列

    在表格中可设置"分布行"或"分布列"将行高.列宽调整为协调统一的高度或宽度,是一种快速实现表格排版的方法之一.下面,通过Java后端程序代码介绍如何在PPT幻灯 ...