zoukankan      html  css  js  c++  java
  • 哈理工oj 1189区间最大值

    链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1189

    这道题是用线段树去求区间最大值的一道题,树状数组对于这个数据量已经显得无能为力了,这也说明了树状数组和线段树分别适合的不同的题

    View Code
     1 #include<stdio.h>
     2 #include<string.h>
     3 #define N 100005
     4 int max(int a,int b)
     5 {
     6     return a>b?a:b;
     7 }
     8 int n;
     9 struct node
    10 {
    11     int l;
    12     int r;
    13     int max;
    14 };
    15 node tree[4*N];
    16 int val[N];
    17 void build(int l,int r,int i)
    18 {
    19     tree[i].l=l;
    20     tree[i].r=r;
    21     if(l==r)
    22     {
    23         tree[i].max=val[l];
    24         return;
    25     }
    26     int mid=(l+r)>>1;
    27     build(l,mid,i<<1);
    28     build(mid+1,r,i<<1|1);
    29     tree[i].max=max(tree[i<<1].max,tree[i<<1|1].max);
    30 }
    31 int query(int l,int r,int i)
    32 {
    33     if(tree[i].l==l&&tree[i].r==r)
    34     {
    35         return tree[i].max;
    36     }
    37     int mid=(tree[i].l+tree[i].r)>>1;
    38     int maxa=0;
    39     if(r<=mid)
    40     maxa=query(l,r,i<<1);
    41     else if(l>mid)
    42     maxa=query(l,r,i<<1|1);
    43     else
    44     maxa=max(query(l,mid,i<<1),query(mid+1,r,i<<1|1));
    45     return maxa;
    46 }
    47 int main()
    48 {
    49     int i;
    50     int q;
    51     int s,t;
    52     int icase=1;
    53     while(scanf("%d",&n)!=EOF)
    54     {
    55         for(i=1;i<=n;i++)
    56         scanf("%d",&val[i]);
    57         build(1,n,1);
    58         scanf("%d",&q);
    59         printf("Case %d:\n",icase++);
    60         while(q--)
    61         {
    62             scanf("%d%d",&s,&t);
    63             printf("%d\n",query(s,t,1));
    64         }
    65     }
    66     return 0;
    67 }
  • 相关阅读:
    python
    python
    python
    python
    python
    python-接口自动化 token 的处理
    如何顺利度过试用期?
    印象深刻-bug汇总
    go 实现1000以内的数字,输入35 输出三十五
    jenkins 汉化
  • 原文地址:https://www.cnblogs.com/caozhenhai/p/2460613.html
Copyright © 2011-2022 走看看