poj 3246 简单线段树
线段树还真有点难写。。。
#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 简单线段树的更多相关文章
- POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化)
POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化) 题意分析 前置技能 线段树求逆序对 离散化 线段树求逆序对已经说过了,具体方法请看这里 离散化 有些数 ...
- Buy Tickets POJ - 2828 思维+线段树
Buy Tickets POJ - 2828 思维+线段树 题意 是说有n个人买票,但是呢这n个人都会去插队,问最后的队列是什么情况.插队的输入是两个数,第一个是前面有多少人,第二个是这个人的编号,最 ...
- poj 3225 【线段树】
poj 3225 这题是用线段树解决区间问题,看了两天多,算是理解一点了. Description LogLoader, Inc. is a company specialized in provid ...
- poj 3264(线段树)
http://poj.org/problem?id=3264 初学线段可以做的水题,也是线段树的基础运用.也是我的第一个线段树的题. 题意:在区间范围内的最大值减去最小值 思路:线段树记录下每个区间内 ...
- poj City Horizon (线段树+二分离散)
http://poj.org/problem?id=3277 City Horizon Time Limit: 2000MS Memory Limit: 65536K Total Submissi ...
- poj 3667 Hotel (线段树)
http://poj.org/problem?id=3667 Hotel Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 94 ...
- HDOJ-1754(简单线段树)
最近开始重新学习线段树,先从最简单的开始吧! I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 ...
- J - Assign the task - hdu 3974(DFS建树+简单线段树)
题意:给一些节点简单额对应关系,可以组成一个树,如果树的某一个节点更新那么他的所有子节点都要更新,中间,会有一些查询 分析:题意倒也不难理解,但是但是不知道怎么建树...于是自能百度,看了kuangb ...
- hdu1556 Color the ball 简单线段树
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1556 简单的线段树的应用 直接贴代码了: 代码: #include<iostream> # ...
- HihoCoder1070 区间最小值(简单线段树)
个测试点(输入文件)有且仅有一组测试数据. 每组测试数据的第1行为一个整数N,意义如前文所述. 每组测试数据的第2行为N个整数,分别描述每种商品的重量,其中第i个整数表示标号为i的商品的重量weigh ...
随机推荐
- npm 发布流程
登录npm 查看本地是否登录 # 全局配置源 npm who am i # 官方源 npm who am i --registry https://registry.npmjs.org 注: npm源 ...
- 浅谈数字孪生和GIS融合的必要性
随着科技的不断发展和应用的不断深入,数字孪生和GIS在各自领域中展现出巨大的潜力.然而,更引人注目的是,数字孪生和GIS的融合将为许多行业带来全新的机遇和变革.在本文中,我们将探讨数字孪生和GIS融合 ...
- StingBuilder与StringBuffer包含的常见方法(图示)
StingBuilder与StringBuffer包含的常见方法
- 一文带你深入理解K8s-Pod的意义和原理
本文分享自华为云社区<深入理解K8s-Pod的意义和原理>,作者:breakDawn. 在Kubernetes概念中,有以下五种概念: 容器container:镜像管理的最小单位 生产任务 ...
- 技本功|统计信息对SQL执行效率的影响
在一个风和日丽的下午,奋哥哥突然接到业务方线上业务数据库CPU资源告警信息,立马放下手里的枸杞登录业务方阿里云控制台查看具体问题. 对于数据库当前正在发生中的问题,我们首先从数据库实时会话信息中尝试抓 ...
- CentOS安装openGauss2.0.1
CentOS安装openGauss2.0.1 OpenGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行.openGauss内核源自PostgreSQL,深度融合华为在数据库领域多年 ...
- JavaFx之controlsfx8下载(十七)
JavaFx之controlsfx8下载(十七) controlsfx是JavaFx功能的扩展补充,这里我使用java8,我将源码下载下来并编译好jar,在java8的环境双击运行runSamples ...
- 用 Socket.D 替代原生 WebSocket 做前端开发
socket.d.js 是基于 websocket 包装的 socket.d 协议的实现.就是用 ws 传输数据,但功能更强大. 功能 原生 websocket socket.d 说明 listen ...
- MongoDB系列:C#、Java驱动连接MongoDB以及封装(C#的MongoDBHelper,Java的MongoDBUtil)
一.C#驱动连接MongoDB 1.创建项目 执行命令:dotnet new console -n MongoDbDriverDemo 2.添加依赖包 执行命令:dotnet add package ...
- 华为云发布CodeArts APIMock服务,精准Mock,并行开发零等待!
本文分享自华为云社区<华为云发布CodeArts APIMock服务,精准Mock,并行开发零等待!>,作者: 华为云头条. 2023年10月10日,华为云正式发布CodeArts API ...