设为首页 加入收藏

TOP

hdu1753I Hate It(线段树)
2014-11-23 19:26:02 来源: 作者: 【 】 浏览:8
Tags:hdu1753I Hate 线段
// File Name: hdu1754.cpp   
// Author: bo_jwolf   
// Created Time: 2013年08月16日 星期五 11点27分03秒   
  
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
  
using namespace std;  
  
#define lson l , mid , rt << 1    
#define rson mid + 1 , r , rt << 1 | 1    
  
const int maxn = 200005 ;  
//int sum[ maxn << 2 ] ;   
  
struct node  
{  
    int Max ;  
}tree[ maxn << 2 ] ;  
  
void PushUp( int rt )  
{  
    tree[ rt ].Max  = max( tree[ rt << 1 ].Max , tree[ (rt << 1 | 1 ) ].Max ) ;  
}  
void build( int l , int r , int rt )  
{  
    if( l == r )  
    {  
        scanf( "%d" , &tree[ rt ].Max );  
        return ;  
    }  
    int mid = ( l + r ) >> 1 ;  
    build( lson ) ;  
    build( rson ) ;  
    PushUp( rt ) ;  
}  
  
void update( int p , int add , int l , int r , int rt )  
{  
    if( l == r )  
    {  
        tree[ rt ].Max  = add ;  
        return ;  
    }  
    int mid = ( l + r ) >> 1 ;  
    if( p <= mid )  
        update( p , add , lson ) ;  
    else  
        update( p , add , rson ) ;  
    PushUp( rt ) ;  
}  
  
int query( int L , int R , int l , int r , int rt )  
{  
    if( L <= l && r <=R )  
    {  
        return tree[ rt ].Max ;  
    }  
    int mid = ( l + r ) >> 1 ;  
    int ret = 0 ;   
    if( L <= mid )  
            ret = max( ret , query( L , R , lson ) ) ;  
    if( R > mid )  
            ret = max( ret , query( L , R , rson ) );  
    return ret ;  
}  
  
int main()  
{  
    int T , n , m ;   
    while( scanf( "%d%d" , &n , &m ) != EOF )  
    {  
        build( 1 , n , 1 ) ;  
        char op[ 10 ] ;  
        while( m-- )  
        {  
            scanf( "%s" , op ) ;  
            int a , b ;  
            scanf( "%d%d" , &a , &b ) ;  
            if( op[ 0 ] == 'Q' )  
                printf( "%d\n" , query( a , b , 1 , n , 1 ) ) ;  
            else  
                update( a , b , 1 , n , 1 ) ;  
        }  
    }  
return 0;  
}  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇sgu - 520 - Fire in the Country 下一篇joj 2453 candy 网络流建图的题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·求navicat for mysql (2025-12-26 13:21:33)
·有哪位大哥推荐一下m (2025-12-26 13:21:30)
·MySQL下载与安装教程 (2025-12-26 13:21:26)
·Linux_百度百科 (2025-12-26 12:51:52)
·Shell 流程控制 | 菜 (2025-12-26 12:51:49)