DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

+⊕ and query

返回题目

题解

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
)