zoukankan      html  css  js  c++  java
  • hdu1754I Hate It

    http://acm.hdu.edu.cn/showproblem.php?pid=1754

    依次比较左右子节点 父节点存最大值

    View Code
     1  #include <iostream>
     2  #include<cstdio>
     3  #include<string.h>
     4  #define MAX 200000
     5  using namespace std;
     6  int s[MAX*4],a;
     7  void push(int w)
     8  {
     9      if(s[2*w]>s[2*w+1])
    10      s[w] = s[2*w];
    11      else
    12      s[w] = s[2*w+1];
    13  }
    14  void build(int l,int r,int w)
    15  {
    16      if(l==r)
    17      {
    18          scanf("%d",&a);
    19          s[w] = a;
    20          return ;
    21      }
    22      int m = (l+r)/2;
    23      build(l,m,2*w);
    24      build(m+1,r,2*w+1);
    25      push(w);
    26  }
    27  void add(int p,int da,int l,int r,int w)
    28  {
    29      if(l==r)
    30      {
    31          s[w] = da;
    32          return;
    33      }
    34      int m = (l+r)/2;
    35      if(p<=m)
    36      add(p,da,l,m,2*w);
    37      else
    38      add(p,da,m+1,r,2*w+1);
    39      push(w);
    40  }
    41  int search(int a,int b,int l,int r,int w)
    42  {
    43      if(a<=l&&b>=r)
    44      {
    45         return s[w];
    46      }
    47      int m = (l+r)/2,re = 0;
    48      if(a<=m)
    49      re = max(re,search(a,b,l,m,2*w));
    50      if(b>m)
    51      re = max(re,search(a,b,m+1,r,2*w+1));
    52      return re;
    53  }
    54  int main()
    55  {
    56      int i,j,k1,k2,n,m;
    57      char c;
    58      while(scanf("%d%d",&n,&m)!=EOF)
    59      {
    60          build(1,n,1);
    61          while(m--)
    62          {
    63              scanf("%*c%c",&c);
    64              if(c=='Q')
    65              {
    66                  scanf("%d %d",&k1,&k2);
    67                  printf("%d\n",search(k1,k2,1,n,1));
    68              }
    69              else
    70              {
    71                  scanf("%d %d",&k1,&k2);
    72                  add(k1,k2,1,n,1);
    73              }
    74          }
    75      }
    76      return 0;
    77  }
  • 相关阅读:
    STL next_permutation 全排列
    日期问题
    兰顿蚂蚁
    矩阵翻硬币
    数学问题-排列组合
    h5css3_03练习
    h5css3_03
    h5css3_02练习
    h5css3_02
    h5c3_01练习
  • 原文地址:https://www.cnblogs.com/shangyu/p/2630006.html
Copyright © 2011-2022 走看看