2019 Мульти-университет Обучение конкурс 1 1 002 Линейный ил

Смысл проблем: 1. конец последовательности необходимых операций ADDEND 2. XOR максимальный интервал.

 

Искомый максимальное значение исключающего ИЛИ секции легко думать, делать линейную группу

Когда контрольный матч блок-сегмент дерева и поддерживать линейную группу, результаты ОДВТ

Перед также, чтобы поддерживать суффикс линейной базы, но не знает, как бороться с интервалом, не думает, что положение линейного появления ухода Джил Вого

Положительное решением должно быть, чтобы поддерживать линейную базу для каждого суффикса, каждый из вставных элементов, когда они местоположение правильного число появляется в самом высоком выборе, при запросе, пока текущая позиция представляется до сих пор в правой л от имени интервала может генерировать этот номер

#include <карта> 
#include < набор > 
#include <CTime> 
#include <CMATH> 
#include <очереди> 
#include <стек> 
#include <вектор> 
#include < строка > 
#include <BitSet> 
#include <cstdio> 
# include <cstdlib> 
#include <CString> 
#include <sstream> 
#include <iostream> 
#include <алгоритм> 
#include <функциональный>
 используя  пространство имен станд;
#defineДля получения (I, х, у) для (INT I = х; г <= у; я ++)  
 #define _for (I, х, у) , для (INT I = х; I> = у; i--)
 #define Mem (е, х) MemSet (е, х, SizeOf (е))  
 #define Sca (х) зсапЕ ( "% d", & х)
 #define SCA2 (х, у) зсапЕ ( "% d% d", & х , & у)
 #define Sca3 (х, у, г) зсапЕ ( "% d% d% d", & х, & у, & г)
 #define SCL (х) Scanf ( "% LLD", & х)  
 #define Pri (х ) Е ( "% d \ п", х)
 #define Prl (х) Е ( "% LLD \ п", х)  
 #define CLR (и) для (INT I = 0; г <= N; я ++) у [I] .clear ();
#define LL долго долго
 #define ULL неподписанный долго долго  
 #define тр make_pair
 #define PII пара <Int, Int>
#define PIL пары <Int, длинный длинный>
 #define ФАПЧ пар <долго долго, долго долго>
 #define пб push_back
 #define фи первый
 #define себе второй 
ЬурейиЙ вектор < INT > VI;
INT чтения () { INT х = 0 , е = 1 ; символ с = GetChar (); в то время как (с < ' 0 ' || с> ' 9 ' ) { если (с == ' - ' ) F = - 1 ; с = GetChar ();}
 в то время(с> = ' 0 ' && C <= ' 9 ' ) {х = х * 10 + с - ' 0 ' ; с = GetChar ();} возвращение х * е;}
 Const  двойной PI = экоса (- 1,0 );
константный  двойной EPS = 1e- 9 ;
Const  INT maxn = 1E6 + 10 ;
Const  ИНТ INF = 0x3f3f3f3f ;
Const  INT мод = 1e9 + 7 ; 
INT N, M, K;
структура XJ {
     INTа [ 32 ], пос [ 32 ]; 
    рядный недействительными инициализации () {
         для ( INT I = 0 ; г <= 30 ; я ++) в [I] = поз [I] = 0 ; 
    } 
    Рядный аннулируются добавить ( INT х, ИНТ р) {
         для ( INT I = 30 ; я> = 0 ; я - ) {
             если ((х & (! 1 << я))) по- прежнему ;
            если (! а [я]) { 
                а [я]= Х; поз [I] = р;
                перерыв ; 
            } Иначе {
                 если (р> поз [I]) подкачки (а [I], х), своп (р, поз [I]); 
                х ^ = а [I]; 
            } 
        } 
    } 
    Инлайн INT getmax ( INT л) {
         INT ANS = 0 ;
        для ( INT I = 30 ; я> = 0 ; я - ) {
             если (поз [I] <л) продолжить ;
            если(ANS <(ANS ^ а [я])) ANS ^ = а [I]; 
        } 
        Возврата ANS; 
    } 
} Предварительно [maxn]; 
INT основных () {
     INT Т; Sca (Т);
    в то время как (T-- ) { 
        SCA2 (N, M); 
        для ( INT I = 1 ; г <= N; я ++ ) {
             Int х = чтения (); 
            предварительно [I] = предварительно [я - 1 ]; 
            предварительно [I] .add (х, I); 
        } 
        INT ANS = 0 ;
        в то время как (M-- ) {
             INT оп =читать();
            если (! оп) {
                 INT л = следующим образом () ^ ANS, г = READ () ^ анс; 
                л = л% N + 1 ; г = г% N + 1 ;
                если (л> г) замены (L, R); 
                ANS = предварительно [г] .getmax (л); 
                Pri (ANS); 
            } Иначе {
                 INT х = READ () ^ анс; 
                N ++ ; 
                предварительно [N] = предварительно [N - 1 ]; 
                предварительно [N] .add (х, Н); 
            }
        } 
    } 
    Возвращают  0 ; 
}

 

рекомендация

отwww.cnblogs.com/Hugh-Locke/p/11231897.html