• hdu 1754 I Hate It


    线段树基础题:

     1 #include<stdio.h>
     2 #include<string.h>
     3 #define INF 0x7fffffff
     4 #define MAXN 800000
     5 int N, M, D, tree[MAXN];
     6 
     7 int max(int a, int b)
     8 {
     9     if(a>b) return a;
    10     else return b;
    11 }
    12 
    13 void updata(int cur)
    14 {
    15     for(int i = (D+cur>>1); i^1; i >>= 1)
    16         tree[i] = max(tree[i<<1], tree[i<<1|1]);
    17 }
    18 
    19 int query(int x, int y)
    20 {
    21     int i = D+x-1, j = D+y+1, ans = -INF;
    22     for(; i^j^1; i >>= 1, j >>=1)
    23     {
    24         if(~i&1)
    25             ans = max(ans, tree[i^1]);
    26         if(j&1)
    27             ans = max(ans, tree[j^1]);
    28     }
    29     return ans;
    30 }
    31 
    32 void init()
    33 {
    34     while(~scanf("%d%d",&N,&M))
    35     {
    36         for(D = 1; D < N+2; D <<= 1);
    37         memset(tree, 0xc3, sizeof(tree));
    38         for(int i = 1; i <= N; i ++)
    39             scanf("%d",&tree[D + i]);
    40         for(int i = D-1; i > 0; i --)
    41             tree[i] = max(tree[i<<1], tree[i<<1|1]);
    42         for(int i = 0; i < M; i ++)
    43         {
    44             char s[5];
    45             int a, b;
    46             scanf("%s%d%d",s,&a,&b);
    47             if(s[0] == 'Q')
    48             {
    49                 printf("%d\n",query(a,b));
    50             }
    51             else
    52             {
    53                 tree[D+a] = b;
    54                 updata(a);
    55             }
    56         }
    57     }
    58 }
    59 
    60 int main()
    61 {
    62     init();
    63     return 0;
    64 } 
  • 相关阅读:
    学习Linux二(创建、删除文件和文件夹命令)
    合理的需求
    两种事件触发的jquery导航菜单
    JS中this关键字
    Hibernate的session问题
    JQUERY图片特效
    学习Linux一(安装VMware和Ubuntu)
    A标签跳转问题
    WEBSERVICE简介
    IE下设置Cursor的一点记录
  • 原文地址:https://www.cnblogs.com/yuzhaoxin/p/2648558.html
Copyright © 2020-2023  润新知