POJ 3264 Balanced Lineup
来源:互联网 发布:淘宝店铺怎么看粉丝数 编辑:程序博客网 时间:2024/06/06 12:35
题意:给出初始化的区间值,m次查询。每次查询区间[a,b]的最大值-最小值
分析:线段树 更新: 无更新 查询:区间查询, 建立线段树的时候,每个结点存储左右子树的最大值和最小值, 查询时直接访问区间最大值和最小值,不需要查找到最低,查询时间复杂度O(logN)
//2384K1594MS#include <cstdio>#include <cmath>#include <iostream>#include <climits>#define MAXN 50010#define L(X) ((X)<<1)#define R(X) (((X)<<1) | 1 )#define MID(X,Y) ( (X+Y) >> 1 )#define MAX(X,Y) ( (X)>(Y) ? (X) : (Y) )#define MIN(X,Y) ( (X)<(Y) ? (X) : (Y) )struct node{ int left , right ; int min , max ;}node[MAXN*4];int num[MAXN] ;int ans_min , ans_max ;void Build_Tree ( int const left , int const right , int const n ){ node[n].left = left ; node[n].right = right ; if ( left < right ) { int mid ; mid = MID(left,right) ; Build_Tree ( left , mid , L(n)) ; Build_Tree ( mid + 1 , right , R(n)) ; } else if ( left == right ) { node[n].min = node[n].max = num[left] ; return ; } node[n].min = MIN ( node[L(n)].min , node[R(n)].min ) ; node[n].max = MAX ( node[L(n)].max , node[R(n)].max ) ;}void Query ( int const left , int const right , int const n ){ if ( left == node[n].left && right == node[n].right ) { ans_max = MAX ( node[n].max , ans_max ) ; ans_min = MIN ( node[n].min , ans_min ) ; return ; } int mid ; mid = MID ( node[n].left , node[n].right ) ; //注意,求的中值不是(left + right)/2,注意区间范围 if ( left > mid ) { Query ( left , right , R(n) ) ; } else if ( right <= mid ) { Query ( left , right , L(n) ) ; } else { Query ( left , mid , L(n) ) ; Query ( mid + 1 , right , R(n) ) ; }}intmain ( ){ int n , m ; scanf ("%d%d" , & n , & m ) ; for ( int i = 1 ; i <= n ; i ++ ) { scanf ("%d" , & num[i] ) ; } Build_Tree ( 1 , n , 1 ) ; for ( int i = 1 ; i <= m ; i ++ ) { ans_min = INT_MAX ; ans_max = 0 ; int left , right ; scanf ("%d%d" , & left , & right ) ; Query ( left , right , 1 ) ; printf ("%d\n" , ans_max - ans_min ) ; } return 0 ;}
- POJ 3264 Balanced Lineup
- POJ 3264 Balanced Lineup
- poj 3264 Balanced Lineup
- poj 3264 Balanced Lineup
- poj 3264 Balanced Lineup
- poj 3264 Balanced Lineup
- Poj 3264 Balanced Lineup
- poj 3264 Balanced Lineup
- POJ-3264-Balanced Lineup
- poj 3264 Balanced Lineup
- poj 3264 Balanced Lineup
- POJ 3264-Balanced Lineup
- poj 3264 Balanced Lineup
- POJ 3264 Balanced Lineup
- POJ-3264-Balanced Lineup
- POJ 3264 Balanced Lineup
- POJ 3264 Balanced Lineup
- poj 3264 Balanced Lineup
- UVa 102 Ecological Bin Packing (water ver.)
- IP层协议 以及 ARP RARP.
- 完全二叉树指向同一层的相邻结点
- find 的使用
- 协程和异步
- POJ 3264 Balanced Lineup
- C语言中的typeof关键字
- sql server date语法
- 使用静态内部类提高封装性
- 百度 Java BAE
- CODE 36: Interleaving String
- 二叉树大总结1 ---- 排序二叉树的各种题
- 测试
- java练习 计算n位可被浮点数精确表示的小数