zoukankan      html  css  js  c++  java
  • hdu 1754...忘了个getchar(),蛋疼了半天...原来划水也有蛋疼的时候...

    #include <stdio.h>
    #include <string.h>
    
    const int MAXN = 200005;
    
    typedef struct {
        int l;
        int r;
        int max;
    }Node;
    
    Node seg[MAXN * 4];
    int Max;
    
    int fmax(int x,int y)
    {
        return x > y ? x : y;
    }
    
    void build(int num,int l,int r)
    {
        seg[num].l = l;
        seg[num].r = r;
        seg[num].max = -1;
    
        if ( l == r )
            return;
    
        int mid = ( l + r ) / 2;
        build(num * 2, l, mid);
        build(num * 2 + 1, mid + 1, r);
    }
    
    void update(int num,int id,int value)
    {
        if ( seg[num].l == id && seg[num].r == id )
        {
            seg[num].max = value;
            return;
        }
        
        int mid = ( seg[num].l + seg[num].r ) / 2;
        if ( id <= mid )
            update(num * 2, id, value);
        else
            update(num * 2 + 1, id, value);
        
        seg[num].max = fmax(value,seg[num].max);
        
    }
    
    void query(int num,int l,int r)
    {
        if ( seg[num].l == l && seg[num].r == r )
        {
            Max = fmax(Max,seg[num].max);
            return;
        }
    
        int mid = ( seg[num].l + seg[num].r ) / 2;
        if ( r <= mid )
            query(num * 2, l, r);
        else if ( mid + 1 <= l )
            query(num * 2 + 1, l, r);
        else
        {
            query(num * 2, l, mid);
            query(num * 2 + 1, mid + 1, r);
        }
    }
    
    
    int main()
    {
    //    freopen("1.txt","r",stdin);
    
        int N,M;
        while ( scanf("%d%d",&N,&M) == 2 )
        {
            build(1,1,N);
    
            int mark;
    
            for (int i = 1; i <= N; i++)
            {
                scanf("%d",&mark);
                update(1,i,mark);
            }
    
            char a;
            int b,c;
            while ( M-- )
            {
                getchar();
                scanf("%c%d%d",&a,&b,&c);
                if ( a == 'Q' )
                {
                    Max = -1;
                    query(1,b,c);
                    printf("%d
    ",Max);
                }
                else
                {
                    update(1,b,c);
                }
            }
        }
    
        return 0;
    }
  • 相关阅读:
    debian7.2+nginx+mysql
    VirtualBox为虚拟OS硬盘扩容
    VirtualBox-Debian7.2-share
    linux 标准化
    linux user date
    Array方法总结
    GET和POST区别 / doGet()和doPost()的区别
    servlet错误:HTTP Status 405
    python类型转换、数值操作
    Architecture:话说科学家/工程师/设计师/商人
  • 原文地址:https://www.cnblogs.com/jiongjiong-mengmeng/p/3150038.html
Copyright © 2011-2022 走看看