좋은 생각, 좋은 생각. . .
아이디어 : 접두사 차동 XOR
제출 : 1
해결 방법 : 같은 $의 qwq의 $의 아이디어와 간격, 메시지의 단일 지점, 펜윅 트리를 수정
#INCLUDE <cstdio> #INCLUDE <iostream> 사용 스페이스 성병; #DEFINE R 레지스터 INT #DEFINE ULL 긴 부호 길이 #DEFINE 줄게 긴 긴 #DEFINE의 일시 정지 (위한 (R I = 1; i가 <= 10000000000; I ++)) #DEFINE freopen을 IN ( '. NOIPAK ++에서 ","R "표준 입력) #DEFINE 아웃 freopen을 ("나가자 밖으로 ","w ", 표준 출력) 공간 FREAD { 정적 숯 B의 [ 1 << 15 ] * S = B * D = B; #ifndef 잭 #DEFINE의 getchar가 () (S == && D (D = (S = B) + FREAD (B, 1,1- << 15 표준 입력), S == D) EOF? g () { R의 RET = 0 , FIX = 1 ; 등록 숯 CH 단계; 동안 (! isdigit에 (CH = getchar가 ())) 수정 = 채널 == ' - ' - 1 : 수정; 경우 (CH2 == EOF) 복귀 EOF; DO RET RET = * 10 + (CH ^ 48 ); 반면 (isdigit에 (CH = getchar가 ())); 반환 RET의 *의 수정; } 인라인 부울 IsEmpty 함수 ( CONST CHAR & CH) { 창 (CH2 <= 36 || CH> = 127 );} 인라인보이드 GS ( 숯 *의 {S) 레지스터 숯 CH 단계; 반면 (IsEmpty 함수 (CH = getchar가 ())); 할 *의 ++ = 채널을; 반면 (IsEmpty 함수 (CH2 =! getchar가 ())); } } 사용 FREAD :: g을; 사용 FREAD :: GS를; 공간 Luitaryi { CONST의 INT의 N = 100010 ; INT의 N, m; INT의 C [N]; 인라인 INT LBT ( INT X) { 돌아가 , X - X} 인라인 공극 추가 ( INTPOS) { 대 (; POS <= N] + = LBT 포스 (POS)) C [POS] ^ = 1 ;} 인라인 INT의 쿼리 ( INT의 POS) {R RET = 0 ; 대 (; POS; pos- = LBT (POS)) RET ^ = C [POS]; 반환 RET를; } 인라인 공극 의 main () { N = g (), m = g (); 반면 (M-- ) { R 연산 = g (), L, R; 경우 (OP & 1 ) L = g (), R = g ()는, (l) 부가 추가 (R + 1 ); 또 , L = g ()의 printf ( " % D \ 없음 " 쿼리 (l)); } } } 주 () {서명 Luitaryi :: 주 (); 반환 0 ; }
2019년 7월 17일