사실, 나도 몰라 & 당신은 무엇을 의미합니까 때문에 나는 그것을하지 않았다이 주제의 시작, 나는 그것이라고 생각 플러스와
이 문제는 실제로 배열을 구성 할 수 있도록하기위한 것입니다, 그것은 비트의 수와 간격에있어서의 갈등하지 않습니다를 참조하십시오.
다루기 쉬운 후, 각 쿼리 0 배열을 만들 것을 알고 | 그것, 비트 다음 쿼리 간격 및 문자를 충족하지 않는 경우 참조]
왜 |합니까?
이것은 &의 작동을 고려하는 방법이다
이진 비트에서는 두 번호 만에 1 비트 정도로 매우 분명한 문제가, 숫자에서 반드시 모든 구간 수와 동일하지 않으며, 1 (1) 밖으로있다
라인에 | 그러나 그들의 쓰레기통에, 일정한 수의 비트에서 쿼리가 해당 비트의 수를 조회 할 때마다, 그래서 동일
그리고 보드가 트리 라인이 바로 여기 펜윅 트리를 사용할 수 없습니다입니다 이유에 대해 생각
1 #INCLUDE <cstdio> 2 #INCLUDE <CString을> 3 #INCLUDE <알고리즘> 4 하여 공간을 성병; 5 CONST의 INT N = + 1E6 (10) ; 6 타입 정의 긴 긴 LL; 7 LL 트리 [N], 지연 [N]; 8 공극 updata ( INT의 RT, INT (L), INT (R), w LL) { 9 트리 [RT] = 트리 [RT] | w; 10 게으른 [RT] = 나무 [RT] | w; 11 } 12 무효 푸시 ( INTRT, INT의 L, INT R) { 13 INT의 중간 = L + R >> 1 ; 14 updata (RT << 1 , L, 중간, 지연 [RT]); 15 updata (RT << 1 | 1 중간 + 1 , R, 지연 [RT]); 16 지연 [RT] = 0 ; 17 } 18 보이드 수정 ( INT의 RT, INT (L), INT (R), INT (S), INT t, w LL) { 도 19 의 경우 (S <= 1 && R <= t) { 20 updata (RT, L, R, W); 21 창 ; 22 } 23 푸시 (RT, L, R); 24 INT의 중간 = L + R >> 1 ; 25 의 경우 (S <= MID) 수정 (RT << 1 , L, 중, S, t, w); 26 일 경우 (t> MID), 수정 (RT << 1 | 1 중간 + 1 , R, S, T, w); 27 트리 [RT] = 트리 [RT << 1 ] 트리 [RT << 1 | 1 ]; 28 } 29 LL 쿼리 ( INT의 RT, INT (L), INT (R), INT (S), INT t) { 30 의 경우 (S <= 1 && t> = R) 복귀 트리 [RT]; 31 푸시 (RT, L, R); 32 INT의 중간 = L + R >> 1 ; 33 의 경우 (t <= MID) 리턴 질의 (RT << 1 , L, 중, S, t); (34) 그 밖의 경우 (S> MID) 리턴 질의 (RT << 1 | 1 중간 + 1 , R, S, T); 35 다른 리턴 질의 (RT << 1 , L, 중, S, T)을 쿼리 (RT << 1 | 1 중간 + 1 , R, S, T); 36 } 37 INT주 () { 38 의 INT m, N, t; bool에 플래그를; 39 개 freopen을 ( " kuai.in " , " R " , 표준 입력); 40 개 freopen을 ( " kuai.out " , " w " , 표준 출력); 41 는 scanf ( " %의 D " , t); 42 동안 (t-- ) { 43 플래그 = 1 ; 44 memset 함수 (트리 0 , 는 sizeof (트리)); 45 는 scanf (" % D % D " , 및 N, m); 46 대 ( INT 나 = 1 ; i가 <= m; I ++ ) { 47 INT의 L, R; 48 LL w; 49 는 scanf ( " % D % % LLD D " , 및 & L, R w); 50 수정 ( 1 , 1 , N, L, R, W); 51 개 LL 데이터 쿼리 = ( 1 , 1 , N, L, R); 52 의 경우 (! 데이터 = w) 플래그 = 0 ; (53) } (54) 의 경우 (플래그)의 printf (" YES \ n " ); 55 사람 의 printf ( " NO \ n " ); 56 } 57 반환 0 ; 58 }