[회장] 트리 HDU 6621 K 번째 가장 가까운 거리

온라인 쿼리 간격, 그것은 나무의 대통령 생각할 수있다

작은 거리를 찾는 제 k에 대해서는, 양자가 될 수

1 #INCLUDE <. 비트 / stdc ++ H>
 2  #DEFINE 내용은 (ⅰ, A는 B)의 경우는 (INT 나는 A =; 나는 = B를을 <; ++ ⅰ)
 3  #DEFINE 12월 (I, B, A)에 대한 ( I = B를을 int로, I> = A - I)
 4  #DEFINE의 파일 () freopen을 ( "C : // 사용자 / ASUS / 데스크탑 / v.txt", "R", 표준 입력); 
5  #DEFINE IO의 IOS :: sync_with_stdio (0) cin.tie (0)
 6  #DEFINE의 INF 0x3f3f3f3f
 7  이용한  스페이스 성병;
8 타입 정의  LL;
9  
10  #DEFINE 미드 (L + R >> 1)
 11  CONST의  INT N = 1000000 ;
(12) INT S [N * (40) , LC [N * 40 , RC [N * 40 , RT [100010]이 [ 100010 ];
13  INT의 N, m, 카세, CT;
(14)  보이드 CLR ( INT 및 X, INT의 L, INT R)
 15  {
 16 개      (S) [X = CT ++] = 0 ;
17      의 경우 (L == R) ;
18      CLR (LC [X], L, MID); CLR (RC [X], 중간 + 1 , R);
19  }
 20  공극 UPD ( INT (X), INT 및 Y, INT의 L,INT의 R, INT P)
 21  {
 22 개      (S) [Y ++ = CT =에서 S [X] + 1 ;
23      의 경우 (L == R) ;
24 일      경우 (p <= MID) RC [Y] =의 RC [X], UPD (LC [X] LC [Y], L, 중, P);
25      의 경우 (P> MID) LC [Y] = LC [X], UPD (RC [X], RC [Y], 중간 + 1 , R, P);
26  }
 27  INT QRY ( INT (X), INT의 Y, INT의 L, INT의 R, INT의 L, INT R, INT 입술 = 0 )
 28  {
 29     경우 (L <= 1 && R <= R)  S [Y] - S [X];
30      의 경우 (L <= MID) 입술 + = QRY (LC [X] LC [Y], L, 중, L, R);
31 일      경우 (MID <R) 입술 + = QRY (RC [X], RC [Y], 중간 + 1 , R, L, R);
32      리턴 입술;
33  }
 34  INT ) (주
 35  {
 36      IO;
37      // 파일 (); 
38      CIN >> 카세;
39      동안 (kase-- )
 40      {
 41          CIN >> >> N m;
42          CT = 0 ;
43          CLR (RT [ 0 ] (1) , N);
44          (I, 옵션 1 , N) CIN >> A [i]는, UPD (RT [I- 1 ], RT [I], 1 , N, A [I]);
45          INT X = 0 , Y는 = 0 , P, K, ANS = 0 ;
46          들어 (I, 1 , m)
 (47)          {
 48              CIN >> >> X, Y, P >> >> K;
49              X = X ^ ANS; Y = Y ^ ANS; p = P ^ ANS; K = K ^ ANS;
50              의 경우 (x> y)로 스왑 (X, Y);
51              INT를 L = 0 , R = N, MI;
52              동안 (L <= R)
 53              {
 54                  MI = L + R >> 1 ;
55                  의 경우 (QRY (RT [X- 1 ], RT [Y], 1 , N, P-MI, P + MI) <K), L = MI + 1 ;
56                  다른 ANS = MI, mi- R = 1 ;
57              }
 58              COUT << ANS << " \ n을 " ;
59          }
 60      }
 61 }

올해 지역 대회에서 재생할 수 없습니다 모른다, 좋은 음식을 느껴 ... _ (| 3 "∠) _

추천

출처www.cnblogs.com/uuuxxllj/p/11300741.html