生活随笔 
收集整理的這篇文章主要介紹了
                                
2019蓝桥杯国赛B组第九题 
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
 
                                
                            題目描述:
 
輸入描述:
 
輸出描述:
 
輸入樣例:
 
輸出樣例:
 
#include <bits/stdc++.h>  
#define  ll long long 
using  namespace  std
; const  int  maxx
= 1e5 + 100 ; 
struct  node
{ int  l
; int  r
; int  a
[ 9 ] ; int  len
; 
} p
[ maxx
<< 2 ] ; 
int  n
, m
, x
, y
; inline  void  pushup ( int  cur
) 
{ int  * c1
= new  int [ 9 ] ; int  * c2
= new  int [ 9 ] ; int  len1
= p
[ cur
<< 1 ] . len
; int  len2
= p
[ cur
<< 1 | 1 ] . len
; sort ( p
[ cur
<< 1 ] . a
, p
[ cur
<< 1 ] . a
+ len1
) ; sort ( p
[ cur
<< 1 | 1 ] . a
, p
[ cur
<< 1 | 1 ] . a
+ len2
) ; c1
= p
[ cur
<< 1 ] . a
; c2
= p
[ cur
<< 1 | 1 ] . a
; int  len
= 0 ; len1
-- , len2
-- ; while ( len
< 8 && ( len1
>= 0 && len2
>= 0 ) ) { if ( c1
[ len1
] > c2
[ len2
] )  p
[ cur
] . a
[ len
++ ] = c1
[ len1
] , len1
-- ; else  p
[ cur
] . a
[ len
++ ] = c2
[ len2
] , len2
-- ; } if ( len1
== - 1 )  while ( len
< 8 && len2
>= 0 )  p
[ cur
] . a
[ len
++ ] = c2
[ len2
-- ] ; else  while ( len
< 8 && len1
>= 0 )  p
[ cur
] . a
[ len
++ ] = c1
[ len1
-- ] ; while ( len
< 8 )  p
[ cur
] . a
[ len
++ ] = 0 ; p
[ cur
] . len
= len
; 
} 
inline  void  build ( int  l
, int  r
, int  cur
) 
{ p
[ cur
] . l
= l
; p
[ cur
] . r
= r
; p
[ cur
] . len
= 0 ; memset ( p
[ cur
] . a
, 0 , sizeof ( p
[ cur
] . a
) ) ; if ( l
== r
)  return  ; int  mid
= l
+ r
>> 1 ; build ( l
, mid
, cur
<< 1 ) ; build ( mid
+ 1 , r
, cur
<< 1 | 1 ) ; 
} 
inline  void  update ( int  pos
, int  v
, int  cur
) 
{ int  L
= p
[ cur
] . l
; int  R
= p
[ cur
] . r
; if ( L
== R
)  { p
[ cur
] . a
[ 0 ] = v
; p
[ cur
] . len
= 1 ; return  ; } int  mid
= L
+ R
>> 1 ; if ( pos
<= mid
)  update ( pos
, v
, cur
<< 1 ) ; else  update ( pos
, v
, cur
<< 1 | 1 ) ; pushup ( cur
) ; 
} 
inline  int  * query ( int  l
, int  r
, int  cur
) 
{ int  L
= p
[ cur
] . l
; int  R
= p
[ cur
] . r
; if ( l
<= L
&& R
<= r
)  return  p
[ cur
] . a
; int  mid
= L
+ R
>> 1 ; if ( r
<= mid
)  return  query ( l
, r
, cur
<< 1 ) ; else  if ( l
> mid
)  return  query ( l
, r
, cur
<< 1 | 1 ) ; else { int  * c1
= new  int [ 9 ] ; c1
= query ( l
, mid
, cur
<< 1 ) ; int  * c2
= new  int [ 9 ] ; c2
= query ( mid
+ 1 , r
, cur
<< 1 | 1 ) ; sort ( c1
, c1
+ 8 ) ; sort ( c2
, c2
+ 8 ) ; int  * c
= new  int [ 9 ] ; int  len
= 0 , len1
= 7 , len2
= 7 ; while ( len
< 8 && ( len1
>= 0 && len2
>= 0 ) ) { if ( c1
[ len1
] > c2
[ len2
] )  c
[ len
++ ] = c1
[ len1
] , len1
-- ; else  c
[ len
++ ] = c2
[ len2
] , len2
-- ; } if ( len1
== - 1 )  while ( len
< 8 && len2
>= 0 )  c
[ len
++ ] = c2
[ len2
-- ] ; else  while ( len
< 8 && len1
>= 0 )  c
[ len
++ ] = c1
[ len1
-- ] ; return  c
; } 
} 
int  main ( ) 
{ scanf ( "%d%d" , & n
, & m
) ; build ( 1 , n
, 1 ) ; char  s
[ 2 ] ; while ( m
-- ) { scanf ( "%s%d%d" , s
, & x
, & y
) ; if ( s
[ 0 ] == 'C' )  update ( x
, y
, 1 ) ; else  { int  * c
= new  int [ 9 ] ; c
= query ( x
, y
, 1 ) ; sort ( c
, c
+ 8 ) ; printf ( "%d\n" , c
[ 0 ] ) ; } } return  0 ; 
} 
 
努力加油a啊,(o )/~
                            總結(jié) 
                            
                                以上是生活随笔 為你收集整理的2019蓝桥杯国赛B组第九题 的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                            
                                如果覺(jué)得生活随笔 網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔 推薦給好友。