HDU 6703の重みセグメントツリー

  質問の意味:

1-N aの完全な配列を指定

操作1:[POS]を変更する[POS]は百万

操作2:最小と(Kを含む)すべての後続Q kと[1] -a [R]はどのように多くの数に等しくありません

N <= 1E5   

 

 

 

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
#define担当者(I、B)(I =(A)がINT;方には<=(B); iが++)
 の#define repp(I、B)(I =(A)がINTのために、I> = (B); - I)
 の#defineは長い長いっ
 の#defineは(X)(CERR <<(#X)<< '=' <<(X)<< ENDL)を参照
 の#define INF 0x3f3f3f3f
 の#define CLR( 、V)のmemset(A、V、はsizeof A)
 //////////////////////////////////// / 
CONST  INT N = 2E6 + 10 INT MAXX [N << 2 ]、位置[N]。
無効アップ(int型のPOS)
{ 
    MAXX [POS] = MAX(MAXX [POS << 1]、MAXX [POS << 1 | 1 ])。
} 
ボイドビルド(int型 L、int型の R、int型のPOS)
{ 
    場合(L == R){MAXX [POS] =ポジション[L]。リターン;}
     int型、M =(L + R)>> 1 
    ビルド(lは、mは、posが << 1);ビルド(M + 1、R、POS << 1 | 1 );アップ(POS)。
} 
ボイドアップノード(int型のx、int型の L、int型の R、int型のPOS)
{ 
    場合(L == R){MAXX [POS] = INF。リターン;}
     int型、M =(L + R)>> 1 もし(x <= M)アップノード(X、L、M、POS << 1 )。
    他のアップノード(X、M + 1、R、POS << 1 | 1 )。
    (POS)アップ。
} 
int型の照会(int型のx、int型の L、INT R、int型の L、int型の R、int型のPOS)
{ 
   場合(L == R)
   { 
       場合(MAXX [POS]> X)リターンL。
       それ以外 の戻りINF。
   } 
   int型M =(L + R)>> 1int型 ANS = infファイル。
   もし(L <= M && MAXX [POS << 1 ]> X)ANS =分(ANS、クエリ(X、L、R、L、M、POS << 1 ))。
   もし(!ANS = INF)の戻りANS;
   もし(R> M && MAXX [POS << 1 | 1 ]> X)ANS =分(ANS、クエリ(X、L、R、M + 1、R、POS << 1 | 1 ))。
   戻るANSを。
} 
int型N、M、T1、T2、T3、lastans、F [N]。
INT のmain()
{ 
    int型 CAS; CIN >> CAS。
     
    {
        scanf関数(" %d個の%のD "、&​​N、&M)。int型のx; 
        担当者(I、1 、N)
        のscanf(" %dの"、&​​x)は、位置[X] = I、[I] = FをX。
        位置[N + 1 ] = INF。
        (ビルド1、N + 11); lastans = 0 一方、(M-- 
        { 
            int型、B、C; scanf関数(" %のD "、&​​A )。
            もし(== 1 
            {
                scanf関数(" %のD "、&​​B)と、b ^ = lastans。
                アップノード([B]、F 1、N + 11 )。
            } 
            
            { 
                scanf関数(" %d個の%のD "、&​​B、&C)と、b ^ = lastans; C ^ = lastans。
                lastans =クエリ(B、C、N + 11、N + 11 )。
                printf(" %d個の\ n " 、lastans)。
            } 
        } 
    } 
    戻り 0 
}
コードの表示

 

木の会長も書き込みに使用することができます

 

おすすめ

転載: www.cnblogs.com/bxd123/p/11408376.html