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

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

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

XOR Network

返回题目

题解

C≥NC\geq NC≥N이면 간선이 없는 t=0t=0t=0에서도 조건을 만족하므로 정답은 000이다. 이하에서는 C<NC<NC<N인 경우를 생각하자. t>0t>0t>0이고 2M≤t<2M+12^M\leq t<2^{M+1}2M≤t<2M+1이라고 하자. 정점을 번호 순서대로 크기 2M+12^{M+1}2M+1인 블록으로 나누면 각 블록이 정확히 하나의 연결 요소가 된다. 마지막 블록의 정점 수가 더 적어도 마찬가지이다. 따라서 연결 요소의 개수는

⌈N2M+1⌉\left\lceil\frac{N}{2^{M+1}}\right\rceil⌈2M+1N​⌉

이다. 이 값은 ttt가 2M2^M2M부터 2M+1−12^{M+1}-12M+1−1까지 변하는 동안 일정하다. 그러므로 가장 작은 tt는 의 거듭제곱 중 하나이다. 부터 시작하여

⌈N2p⌉≤C\left\lceil\frac{N}{2p}\right\rceil\leq C⌈2pN​⌉≤C

가 될 때까지 ppp를 두 배로 늘리면 된다. 처음으로 조건을 만족하는 ppp가 정답이다. 천장 함수는 양의 정수 xxx, yyy에 대한 등식 ⌈x/y⌉=⌊(x+y−1)/y⌋\lceil x/y\rceil=\lfloor(x+y-1)/y\rfloor⌈x/y⌉를 이용하여 계산할 수 있다. 시간 복잡도는 이고, 추가 공간 복잡도는 이다.

증명

L=2M+1L=2^{M+1}L=2M+1이라 하고, qqq번째 블록을 qL≤v<(q+1)LqL\leq v<(q+1)LqL≤을 만족하는 정점 들의 집합으로 정의하자. 실제로 존재하는 정점만 포함하므로 마지막 블록은 개보다 적은 정점을 포함할 수도 있다. 서로 다른 블록에 있는 두 정점의 번호는 번째 이상의 비트 중 적어도 하나가 다르다. 따라서 두 번호의 XOR은 이상이며 보다 크다. 서로 다른 블록을 잇는 간선은 없다. 한 블록의 첫 정점 번호를 이라고 하자. 이 블록의 임의의 정점 에서, 번호의 번째부터 번째 비트 중 켜져 있는 비트를 하나씩 끄면 에 도달한다. 번째 비트를 끄는 한 단계에서 두 정점 번호의 XOR은 이므로 두 정점 사이에 간선이 있다. 이 과정에서는 상위 비트가 변하지 않으므로 계속 같은 블록에 머문다. 또한 번호가 감소하기만 하므로 모든 중간 정점의 번호는 이상이고 처음의 이하이다. 따라서 마지막 블록이 완전히 채워져 있지 않아도 모든 중간 정점이 존재한다. 블록의 모든 정점이 와 연결되므로 각 블록은 하나의 연결 요소이다. 블록의 개수는 이므로 연결 요소의 개수도 이다. 이 개수는 인 동안 변하지 않으므로 해당 구간에서는 가장 작은 값 만 확인하면 된다. 이면 은 조건을 만족하지 않는다. 를 순서대로 확인하면 조건을 만족할 수 있는 모든 구간의 시작점을 작은 순서대로 확인하게 된다. 따라서 처음으로 조건을 만족하는 값이 정답이다.

Solution written by GPT6

t
222
p=1p=1p=1
=
⌊(x+
y−
1)/y⌋
O(log⁡N)O(\log N)O(logN)
O(1)O(1)O(1)
v
<
(q+
1)L
vvv
LLL
M+1M+1M+1
2M+12^{M+1}2M+1
ttt
b=qLb=qLb=qL
vvv
000
MMM
bbb
mmm
2m≤2M≤t2^m\leq 2^M\leq t2m≤2M≤t
bbb
v<Nv<Nv<N
bbb
⌈N/L⌉\lceil N/L\rceil⌈N/L⌉
⌈N/2M+1⌉\lceil N/2^{M+1}\rceil⌈N/2M+1⌉
2M≤t<2M+12^M\leq t<2^{M+1}2M≤t<2M+1
t=2Mt=2^Mt=2M
C<NC<NC<N
t=0t=0t=0
1,2,4,…1,2,4,\ldots1,2,4,…