(リニアイル)動作

http://acm.hdu.edu.cn/showproblem.php?pid=6579

リニアイルhttps://blog.csdn.net/a_forever_dream/article/details/83654397

テンプレートhttps://blog.csdn.net/u013534123/article/details/79875825

我々は、各位置での線ベースの現在位置を考慮すべき最初の位置を得ます。私たちは、できるだけ多くのことで、選択したグループの対数線形高次の位置を確認します。だから細かい位置情報を維持しながら、私たちは、リニア基盤を維持する場合。

書式#include <CStringの> 
の#include <アルゴリズム> 
書式#include <ベクトル> 
の#include <マップ> 
書式#include <キュー> 
の#include <cstdioを> 
する#include <スタック> 
の#include <cmath> 
の#include <iostreamの>
 に#define LL長い長いです
 #define lowbit(x)は、x&( - X)
 の#define MAXN105万
 の#define 0x3f3f3f3f INF
 使用して 名前空間STDを、
INT [MAXN] [ 35 ]。// 存线性基
INT [MAXN] B [ 35 ]。// 存位置
のintK;
ボイド追加(INT X)
{ 
    int型 CUR = ++ 、K。
    以下のためにint型 iは= 31、I> = 0 ; i-- 
    { 
        [k]は[I] = [K- 1 ] [i]は、
        B [k]は[I] = bの[K- 1 ] [i]は、
    } 
    のためにint型 I = 31 ; I> = 0 ; i-- 
    { 
        場合(X >> I)
        { 
            場合(![K] [I])
            { 
                [K] [I] =バツ; 
                B [k]は[I] = CUR。
                破ります; 
            } 
            
            { 
                場合(CUR> B [k]は[I])
                { 
                    スワップ([K] [i]は、X)。
                    スワップ(B [k]は[I]、CUR)。
                } 
                X ^ = [K] [i]は、
            } 
        } 
    } 
} 
int型の照会(int型 L、INT R)
{ 
    L = 1%のK + 1 
    R = Rの%のK + 1 もし(L>R)
    スワップ(L、R)。
    int型 RET = 0 ;
    以下のためにint型 iは= 31、I> = 0 ; i-- 
    { 
        場合(B [R] [I]> = L)
        { 
            RET = MAX(RET、[R] [I] ^ RET)。
        } 
    } 
    戻りRET。
} 
int型のmain()
{ 
    int型のT。
    scanf関数(" %のD "、&T)。
    INTのN、M。
    一方、(t-- 
    { 
        K = 0; 
        scanf関数(" %d個の%のD "、&​​N、&M)。
        int型のx;
        以下のためにint型 i = 0 ; iがn <I ++の
        { 
            scanf関数(" %のD "、およびX)を、
            (x)を追加します。
        } 
        int型の OP、Y、ANS = 0 一方、(M-- 
        { 
            scanf関数(" %D%dの"、&​​OP、およびX)
            もし(OPの== 0 
            {
                scanf関数(" %のD "、&Y)。
                ANS =クエリ(X ^ ANS、Y ^ ANS)。
                printf(" %d個の\ n " 、ANS)。
            } 
            
            { 
                (X追加 ^ ANS)を、
            } 
        } 
    } 
}

 

おすすめ

転載: www.cnblogs.com/2462478392Lee/p/11573629.html