Poj 3246 Balanced Lineup(线段树基础)
依旧是线段树基础题
询问区间的最大值和最小值之差,只有询问,没有插入删除。继续理解基础线段树
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <climits>//形如INT_MAX一类的
#define MAX 50005
#define INF 0x7FFFFFFF
#define REP(i,s,t) for(int i=(s);i<=(t);++i)
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
#define mp(a,b) make_pair(a,b)
#define L(x) x<<1
#define R(x) x<<1|1
# define eps 1e-5
//#pragma comment(linker, "/STACK:36777216") ///传说中的外挂
using namespace std;
struct node
{int l,r,mid,max,min;
}tree[4*MAX];
int hei[MAX],a,b;
int maxx(int a,int b) {if(a > b) return a;return b;
}
int minn(int a,int b) {if(a < b) return a;return b;
}
void up(int num) {if(tree[num].max < tree[L(num)].max) tree[num].max = tree[L(num)].max;if(tree[num].max < tree[R(num)].max) tree[num].max = tree[R(num)].max;if(tree[num].min > tree[L(num)].min) tree[num].min = tree[L(num)].min;if(tree[num].min > tree[R(num)].min) tree[num].min = tree[R(num)].min;
}void build(int l,int r,int num) {tree[num].l = l;tree[num].r = r;tree[num].mid = (l + r) >> 1;tree[num].max = 0;tree[num].min = INF;if(l == r) {tree[num].max = hei[l];tree[num].min = hei[l];return ;}build(l,tree[num].mid ,L(num));build(tree[num].mid+1,r,R(num));up(num);
}void query(int l,int r,int num) {if(l <= tree[num].l && r >= tree[num].r) {a = maxx(a,tree[num].max);b = minn(b,tree[num].min);return ;}if(r <= tree[num].mid ) {query(l,r,L(num));}else if(l > tree[num].mid) {query(l,r,R(num));}else {query(l,tree[num].mid,L(num));query(tree[num].mid + 1,r,R(num));}
}void test(int n)
{for(int i=1; i<=2*n+1; i++){printf("l:%d r:%d max:%d min:%d\n",tree[i].l,tree[i].r,tree[i].max,tree[i].min);}
}int main() {int n,q,i;int l,r;cin >> n >> q;for(i=1; i<=n; i++) {scanf("%d",&hei[i]);}build(1,n,1);//test(n);for(i=1; i<=q; i++) {a = 0;b = INF;scanf("%d%d",&l,&r);query(l,r,1);printf("%d\n",a - b);}return 0;
}
转载于:https://www.cnblogs.com/dyllove98/p/3201117.html
Poj 3246 Balanced Lineup(线段树基础)相关推荐
- POJ 3264 Balanced Lineup
POJ 3264 Balanced Lineup 题目链接 Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,00 ...
- POJ 3264 Balanced Lineup【线段树区间查询求最大值和最小值】
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 53703 Accepted: 25237 ...
- poj 3264 Balanced Lineup RMQ问题 线段树
For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One d ...
- POJ 3264 Balanced Lineup 【线段树】
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 50004 Accepted: 23434 Cas ...
- POJ——3624 Balanced Lineup(线段树入门——区间最值问题)
原题链接:http://poj.org/problem?id=3264 每天挤奶时,农夫John的N头奶牛(1≤N≤50,000头)总是按照相同的顺序排列.一天,农夫约翰决定和几头牛组织一场极限飞盘游 ...
- POJ 3264 Balanced Lineup
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 53629 Accepted: 25223 ...
- POJ 3667 Hotel(线段树)
POJ 3667 Hotel 题目链接 题意:有n个房间,如今有两个操作 1.找到连续长度a的空房间.入住,要尽量靠左边,假设有输出最左边的房间标号,假设没有输出0 2.清空[a, a + b - 1 ...
- POJ 2828 Buy Tickets 线段树
题目: http://poj.org/problem?id=2828 很巧妙的题,逆序插入线段树,这样元素不用移动.用二叉排序树也能过. 1 #include <stdio.h> 2 #i ...
- POJ 3264: Balanced Lineup
2019独角兽企业重金招聘Python工程师标准>>> 题目在此 解题思路:查询区间最大值/最小值之差,最基础的线段树应用. 代码: #include <cstdio>/ ...
最新文章
- 怎样才能最短时、高效、踏实地学习3D视觉?
- 【robotframework】robotframework基本使用
- OpenCV直方图均衡Histogram Equalization
- kernel-devel
- sql2005备份还原详解
- mysql内置加密函数_MySQL数据库内置加密函数总结
- 并发编程的 15 条建议(译)
- java 关键字null
- html5新的dom函数,从0到1: 实现一个虚拟 DOM(上)
- 全网最详细的idea安装教程
- 还在用Json-lib?面对疾风吧!
- PS证件照更改背景颜色
- 聚合支付系统设计(三)
- LCD 触摸屏调试记录
- 201771010112罗松《面向对象程序设计(java)》第十一周学习总结
- 北邮计算机网络实践第四次实验,北邮计算机网络技术实践实验四实验报告.doc...
- Snipaste常用快捷键(详细总结)
- 2021年安全生产监管人员及安全生产监管人员模拟试题
- 有没有开源的虚拟路由器?有,VPP了解一下
- 美国AMC数学竞赛的含金量如何?
热门文章
- Linux cal日历指令
- Java并发编程--不要使用字符串常量作为synchronized锁对象
- elasticsearch集群配置文件详述
- origin安装包_作图技巧|研究生需要会的20个Origin操作,作图又快又好看(二)...
- Centos7安装tengine-2.3.2版本
- Qt IFW基本用法
- Qt for ios / Qt for Android 设置透明状态栏
- VHDL的数据对象(学习笔记1)
- 视图插入数据_数据库DQL、DML、DDL、DCL 详解
- 用 openssl 生成 SSL 使用的私钥和证书,并自己做 CA 签名