牛オフより学校B--第三の直線セグメントツリーのメンテナンス基本給

基本給の線形関数を書くのに長い時間をデバッグします。

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
#defineは長い長いっ
 の#define MAXN 100005
 int型M、N。
構造体LB { 
    LLのB [ 35 ]。
    INT 検査(LL X){
         ためint型私は= 32、I> = 0 ; i--)であれば(X >> I&1 ){
             場合(!B [i])とリターン 0 
            X ^ = B [i]は、
        } 
        を返す 1 
    } 
    ボイドインサート(LL x)から{
        以下のためにint型 = Iを32 ; I> = 0 ; i--)IF(I&X >> 1。){
             IF(!{B [I])
                B [I] =のX; リターン; 
            } 
            X ^ = Bの[ I]; 
        } 
    } 
} 基本[MAXN];
 ボイドマージ(LB、LB B、LB&Wである){ 
    LB ALL、D; // W [i]はA Couchu BIを表すクロスAB、Dであります塩基、すなわち、各BI Tに対応
    するためのint型 I = 0 ;私は<= 32 ; I ++)ALL.b [I] = DB [I] = Abの[I]、
     のためにint型 i = 0 ; iは= < 32 ; iは++)場合(BB [I]){ 
        LLのBI = Bbの[i]を、T = 0、フラグ= 0 int型 J = 32 ; J> = 0 ; j--)場合(BI >> J&1 ){
             場合(!{ALL.b [J])
                ALL.b [J] = BI; DB [J] = T。
                フラグ = 1破ります; 
            } 
            BI ^ = ALL.b [J]; T ^ = DB [J]。
        } 
        場合(!フラグ)
            W.insert(T); 
    } 
} 

の#define LSON L、M、RT << 1つ
 の#define rsonのM + 1、R、RT << 1 | 1 
LB SEG [MAXN << 2 ]。
ボイドビルド(int型 L、INT R、INT RT){
     場合(L == R){SEG [RT] = 基地 [L]。返す;}
     int型の M = L + R >> 1 
    (rson)の構築;(LSON)を構築します。
    マージ(SEG [RT << 1 ]、SEG [RT << 1 | 1 ]、SEG [RT])。
} 
int型のクエリ(int型L、INT R、LLのx、int型の L、INT R、INT RT){
     場合)L <= 1 && R> = R(リターンSEG [RT] .check(X)。
    int型の M = L + R >> 1、RESの= 1 ;
    もし(L <= M)RES&= クエリ(L、R、X、LSON)。
    もし(R> M)RES&= クエリ(L、R、X、rson)。
    リターンのres; 
} 

int型のmain(){ 
    scanf関数(" %D%dの"、&​​N、&M)。
        
        以下のためにint型私= 1 ; iが<= N; iが++ ){
             int型 kは、scanf関数(" %のD "、&K)。
            一方、(k-- ){ 
                LLのX; scanf関数(" %のLLD "、&x)は、
                もし(!基地[I] .check(x))を            
                     ベース[I] .insert(X)。
            } 
        } 
        ビルド(1、nは、1 )。
                
        INTのL、R; LL X;
        一方、(M-- ){ 
            scanf関数(" %D%D%LLD "、&​​L&R&X)。
            もし(クエリ(L、R、X、1、nは、1))プット(" YES " );
            他のプット(" NO " ); 
        }      
}

 

おすすめ

転載: www.cnblogs.com/zsben991126/p/11269207.html