zoukankan      html  css  js  c++  java
  • 点修改区间查询 HDU1754

     1 #include <iostream>
     2 #include <cstdio>
     3 
     4 using namespace std;
     5 
     6 int an[200010];
     7 struct Node
     8 {
     9     int l;
    10     int r;
    11     int ma;
    12 }bn[800010];
    13 
    14 void build(int k,int l,int r)
    15 {
    16     bn[k].l=l;
    17     bn[k].r=r;
    18     if(l==r)
    19     {
    20         bn[k].ma=an[l];
    21         return ;
    22     }
    23     int lk=k*2;
    24     int rk=lk+1;
    25     int mid=(l+r)/2;
    26     build(lk,l,mid);
    27     build(rk,mid+1,r);
    28     bn[k].ma=max(bn[lk].ma,bn[rk].ma);
    29 }
    30 
    31 void change(int k,int i,int a)
    32 {
    33     if(bn[k].l==i&&bn[k].r==i)
    34     {
    35         bn[k].ma=a;
    36         return ;
    37     }
    38     int lk=k*2;
    39     int rk=lk+1;
    40     if(bn[lk].r>=i)
    41         change(lk,i,a);
    42     else if(bn[rk].l<=i)
    43         change(rk,i,a);
    44     bn[k].ma=max(bn[lk].ma,bn[rk].ma);
    45 }
    46 
    47 int search(int k,int l,int r)
    48 {
    49     if(bn[k].l==l&&bn[k].r==r)
    50     {
    51         return bn[k].ma;
    52     }
    53     int lk=k*2;
    54     int rk=lk+1;
    55     if(bn[lk].r>=r)
    56         return search(lk,l,r);
    57     else if(bn[rk].l<=l)
    58         return search(rk,l,r);
    59     else
    60         return max(search(lk,l,bn[lk].r),search(rk,bn[rk].l,r));
    61 }
    62 
    63 int main()
    64 {
    65     int n,m;
    66     while(scanf("%d%d",&n,&m)!=EOF)
    67     {
    68         for(int i=1;i<=n;i++)
    69             scanf("%d",&an[i]);
    70         build(1,1,n);
    71         for(int i=0;i<m;i++)
    72         {
    73             char ca;
    74             int a,b;
    75             scanf(" %c ",&ca);
    76             scanf("%d%d",&a,&b);
    77             if(ca=='Q')
    78                 printf("%d
    ",search(1,a,b));
    79             else if(ca=='U')
    80                 change(1,a,b);
    81         }
    82     }
    83     return 0;
    84 }
    View Code
  • 相关阅读:
    docker 服务器安装harbor
    docker win10 推送镜像问题
    docker win10 基本指令
    docker、docker-compose安装,卸载
    go 名词备注
    go 结构开发规范
    Java基础--day14
    Java基础--day12
    Java基础--day11
    算法笔记--数据结构--树与二叉树
  • 原文地址:https://www.cnblogs.com/wsruning/p/4691364.html
Copyright © 2011-2022 走看看