DOJ logoDOJ
문제
최근 추가된 문제들저장한 문제
카테고리DLC대회그룹팀게시판
랭킹
문제 풀이 랭킹스트릭 랭킹DOJ Power 랭킹
현황
문제 제안로그인회원가입
DOJ logoDOJ

OI 서브태스크 채점, Elo 레이팅, Discord 인증을 갖춘 커뮤니티 온라인 저지.

문제
문제 목록카테고리
커뮤니티
대회랭킹게시판공지사항외부 대회 개최이용 안내
계정
로그인회원가입채점 현황
정책
이용약관DLC 이용 규칙개인정보 처리방침API 사용 설명서언어별 채점 환경대회 순위 보상레이팅과 퍼포먼스
© 2026 DOJ
모든 권리 보유
해설

+⊕과 쿼리

문제로 돌아가기

해설

K=31K=31K=31로 둔다. 모든 입력 값은 2302^{30}230보다 작으므로, 000번 비트부터 303030번 비트까지 고려하면 충분하다.

0≤j<K0 \leq j < K0≤j<K와 0≤r<2j0 \leq r < 2^j0≤r<2j에 대해, Ai 인 모든 를 하나의 노드 에 넣는다. 비트는 낮은 자리부터 읽는다. 따라서 의 두 자식은 과 이다.

각 인덱스 iii는 노드 (j,Ai mod 2j)(j,A_i \bmod 2^j)(j,Ai​mod2j)에 다음 요구값을 준다.

di,j=bit⁡j(AixorBi).d_{i,j}=\operatorname{bit}_j(A_i\mathbin{\mathrm{xor}}B_i).di,j​=bitj​(A

덧셈과 XOR을 합성하여 얻은 함수가 입력값 zzz를 출력값 f(z)f(z)f(z)로 보낸다고 하자. f(z)f(z)f(z)의 하위 jjj개 비트는 zzz의 하위 개 비트만으로 결정된다. 그러므로 같은 노드에 속한 모든 인덱스의 요구값은 같아야 한다.

다음 보조정리가 핵심이다.

보조정리. 각 노드 (j,r)(j,r)(j,r)에 jjj번 비트의 변화량 ej,re_{j,r}ej,r​를 적었다고 하자. 이 변화량들이 덧셈과 XOR의 합성으로 만들어질 필요충분조건은, 각 1≤j≤K−에 대해 다음 값이 모든 에서 같다는 것이다.

ej,rxorej+1,rxorej+1,r+2je_{j,r}\mathbin{\mathrm{xor}}e_{j+1,r}\mathbin{\mathrm{xor}}e_{j+1,r+2^j}ej,r​xorej

j=0j=0j=0에는 노드가 하나뿐이므로 별도 조건이 없다. 이 보조정리는 덧셈과 XOR 각각에 대해 식을 확인하고, 비트별로 아래에서 위로 합성을 구성하여 증명할 수 있다. 303030번 비트를 추가로 고려했으므로 모듈러 연산에서 생길 수 있는 넘침도 허용되지 않는다. 음이 아닌 조건은 구성 과정에서 충분히 큰 공통 이동량을 사용하면 만족시킬 수 있다.

현재 인덱스가 하나 이상 들어 있는 노드를 extbf{활성 노드}라고 하자. 같은 노드의 요구값이 서로 다르면 바로 불가능하다. 그렇지 않으면 그 공통 요구값을 d(j,r)d(j,r)d(j,r)로 둔다.

활성 노드 (j,r)(j,r)(j,r)의 두 자식이 모두 활성이라면 보조정리의 값은 다음과 같이 강제로 정해진다.

c(j,r)=d(j,r)xord(j+1,r)xord(j+1,r+2j).c(j,r)=d(j,r)\mathbin{\mathrm{xor}}d(j+1,r)\mathbin{\mathrm{xor}}d(j+1,r+2^j).c(j,r)=d(j,r)xord(j

자식 하나가 비어 있다면 그 자식의 값을 자유롭게 정할 수 있으므로 조건이 생기지 않는다. 따라서 변환이 가능한 필요충분조건은 다음 두 가지이다.

  • 모든 활성 노드에서 요구값이 하나로 일치한다.
  • 각 깊이 jjj마다, 두 자식이 모두 활성인 모든 노드의 c(j,r)c(j,r)c(j,r)가 하나로 일치한다.

수열 AAA의 값을 낮은 비트부터 넣은 이진 트라이를 관리한다. 각 노드에는 요구값이 000인 인덱스 수와 111인 인덱스 수를 저장한다. 또한 요구값이 충돌하는 노드의 총개수와, 각 깊이에서 강제된 ccc가 000인 노드 수와 111인 노드 수를 저장한다.

하나의 원소가 바뀌면 이전 (Ai,Bi)(A_i,B_i)(Ai​,Bi​)를 트라이에서 지우고 새로운 (Ai,Bi)(A_i,B_i)(A를 넣는다. 영향을 받는 노드는 하나의 루트-리프 경로뿐이다. 각 노드와 그 두 자식만 보면 해당 노드의 상태를 갱신할 수 있다.

한 쿼리의 시간 복잡도는 O(K)=O(log⁡109)O(K)=O(\log 10^9)O(K)=O(log109)이고, 전체 공간 복잡도는 O((N+Q)K)O((N+Q)K)O((N+Q)이다.

Solution written by GPT5

mod 2j=rA_i \bmod 2^j=r
Ai​mod2j=r
iii
(j,r)(j,r)(j,r)
(j,r)(j,r)(j,r)
(j+1,r)(j+1,r)(j+1,r)
(j+1,r+2j)(j+1,r+2^j)(j+1,r+2j)
i
​
xor
Bi​).
jj
j
21 \leq j \leq K-2
1≤j≤K−2
rrr
+
1
,
r
​
xor
ej+1,r+2j​
+
1,r)xor
d(j+
1,r+
2j).
i
​
,
Bi​
)
K
)