hdu 5443 (2015长春网赛G题 求区间最值)


求区间最值,数据范围也很小,因为只会线段树,所以套了线段树模板=.=

Sample Input
3
1
100
1
1 1
5
1 2 3 4 5
5
1 2
1 3
2 4
3 4
3 5
3
1 999999 1
4
1 1
1 2
2 3
3 3

Sample Output
100
2
3
4
4
5
1
999999
999999
1

 1 # include <iostream>
 2 # include <cstdio>
 3 # include <cstring>
 4 # include <algorithm>
 5 # include <cmath>
 6 # include <queue>
 7 # define LL long long
 8 using namespace std ;
 9 
10 const int maxn = 1010;
11 
12 int MAX[maxn<<2] ; //结点开4倍
13 
14 void PushUP(int rt) //更新到父节点
15 {
16     MAX[rt] = max(MAX[rt * 2] , MAX[rt * 2 + 1] ); //rt 为当前结点
17 }
18 
19 void build(int l , int r , int rt) //构建线段树
20 {
21     if (l == r)
22     {
23         scanf("%d" , &MAX[rt]) ;
24         return ;
25     }
26     int m = (l + r) / 2 ;
27     build(l , m , rt * 2) ;
28     build(m + 1 , r , rt * 2 +1) ;
29     PushUP(rt) ;
30 }
31 
32 
33 int query(int L , int R , int l , int r , int rt)  //区间求最大值
34 {
35     if (L <= l && r <= R)
36         return MAX[rt] ;
37     int m = (l + r) / 2 ;
38     int ret = 0 ;
39     if (L <= m)
40        ret = max(ret , query(L , R , l , m , rt * 2) ) ;
41     if (R > m)
42        ret = max(ret , query(L , R , m + 1 , r , rt * 2 + 1) );
43     return ret ;
44 }
45 
46 int main ()
47 {
48     //freopen("in.txt","r",stdin) ;
49     int n , m ;
50     int T ;
51     scanf("%d" , &T) ;
52     while(T--)
53     {
54         scanf("%d" , &n) ;
55         build(1 , n , 1) ;
56         scanf("%d" , &m) ;
57         while(m--)
58         {
59             int a , b ;
60             scanf("%d %d" , &a , &b) ;
61             printf("%d\n", query(a , b , 1 , n , 1))  ;
62         }
63     }
64 
65     return 0 ;
66 }
View Code

优质内容筛选与推荐>>
1、SQL两个字段排序
2、opencv2.4 Mat矩阵操作
3、让历史告诉我们未来
4、Exception in thread "main" java.util.NoSuchElementException: No line found
5、戏说OO思想


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn