线段树基本应用——区间最值查询
来源:互联网 发布:软件源闪退怎么办 编辑:程序博客网 时间:2024/06/06 07:45
感觉对线段树快有阴影了。。还是先从最简单的开始吧。关键是理解原理。
求区间最小值:
题目:
2 //testcases
5 3 //n:数组元素个数,m:查询次数
78 1 22 12 3 //输入数组,每个数最大值不超过10^5
1 2 //查询从l到r上的最小值
3 5
4 4
#include <cstdio>#include <algorithm>#define lson l , m , rt << 1#define rson m + 1 , r , rt << 1 | 1using namespace std;const int maxn = 105000;int MIN[maxn<<2];void PushUP(int rt){ MIN[rt] = min(MIN[rt<<1] , MIN[rt<<1|1]);}void build(int l,int r,int rt){ if (l == r) { // printf("%d %d ",l,rt); 用来观察建树的过程 scanf("%d",&MIN[rt]); return ; } int m = (l + r) >> 1; build(lson); build(rson); PushUP(rt);}int query(int L,int R,int l,int r,int rt){ if (L <= l && r <= R) { return MIN[rt]; } int m = (l + r) >> 1; int ret = 100090; if (L <= m) ret = min(ret , query(L , R , lson)); if (R > m) ret = min(ret , query(L , R , rson)); return ret;}void update(int p,int sc,int l,int r,int rt) { //单点替换,本题未用到if (l == r) {MIN[rt] = sc;return ;}int m = (l + r) >> 1;if (p <= m) update(p , sc , lson);else update(p , sc , rson);PushUP(rt);}int main(){ int n , m; int casesNum; scanf("%d",&casesNum); for(int t=1; t<=casesNum; t++) { scanf("%d%d",&n,&m); build(1 , n , 1); printf("Case %d:\n",t); while (m --) { int a , b; scanf("%d %d",&a,&b); printf("%d\n",query(a , b , 1 , n , 1)); } } return 0;}
- 线段树基本应用——区间最值查询
- 【模板】线段树区间修改、区间求和、查询最值
- 快速查询区间最值——RMQ算法(线段树实现代码)
- 线段树实现区间最值查询代码
- hdu5289 二分 + 区间最值查询(线段树) + 暴力
- NYOJ 1185 最大最小值 (线段树 & 区间最值查询)
- (一)线段树入门--区间最值查询
- 线段树——单点替换区间最值
- 区间最值线段树
- 线段树,区间最值
- NBOJv2 1004 蛤玮打扫教室(线段树区间更新区间最值查询)
- NBOJv2 1034 Salary Inequity(DFS序+线段树区间更新区间(最值)查询)
- POJ 3237Tree(树链剖分-线段树点更新-区间更新-区间最值查询-入边)
- 线段树大模板(区间更新,单点更新,查询区间最值等等)
- 线段树区间查询
- 线段树求区间最值
- 区间最值与线段树
- NOJ1042 线段树区间最值
- Net Micro Framework 快速入门
- 深入浅出“输入输出”
- linux 多线程小例子
- 单片机IO口结构及上拉电阻
- Intent和Intent-filter
- 线段树基本应用——区间最值查询
- Z-Wave™ as Home Control RF Platform
- C++数组动态分配空间国外玩家最关注的韩游
- c语言宏定义的连接符##和#转字符串
- Object-c中各种数据类型之间的转换
- 杭电ACM 1297 Children’s Queue
- Kaka's Matrix Travels POJ 3422 最大费用流
- 高效 JavaScript 单元测试
- 传奇程序员John Carmack 访谈实录 (zz.is2120)