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

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

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

Ladders and Queries

返回题目

题解

가로선이 xxx번 막대와 x+1x+1x+1번 막대를 잇는 것을 sxs_xsx​라 쓰자. 먼저 높이가 증가하는 순서대로

s1,s2,⋯ ,sN−1,sN−1,⋯ ,s2,s1s_1,s_2,\cdots,s_{N-1},s_{N-1},\cdots,s_2,s_1s1​,s2​,⋯,sN−1​,s

을 만든다. 앞부분을 역순으로 한 뒷부분이 이어지므로, 이 사다리는 어느 막대에서 출발해도 같은 막대에 도착한다. 여기까지 2N−22N-22N−2번의 111번 연산을 사용한다.

목표 (a,b)(a,b)(a,b)를 처리할 때 a=ba=ba=b라면 바로 2 a2\ a2 a를 출력한다. 그렇지 않다면 a>1a>1a>1일 때 앞부분의 높이 에 있는 을 지운다. 일 때 뒷부분의 높이 에 있는 을 지운다. 그 상태에서 를 출력하고, 방금 지운 가로선을 다시 만든다.

앞부분에서 sa−1s_{a-1}sa−1​을 빼면 출발 막대 aaa가 기존의 111번 막대 경로로 옮겨진다. 뒷부분에서 sb−1s_{b-1}s을 빼면 그 경로가 번 막대로 이어진다. 따라서 질의의 결과는 이다. 복구 후에는 원래의 항등 사다리가 되므로 다음 목표에도 같은 방법을 쓸 수 있다.

처음에 2N−22N-22N−2번, 각 목표마다 최대 444번의 111번 연산을 사용한다. 총 6N−26N-26N−2번 이하이므로 제한을 만족한다. 출력의 길이와 계산 시간은 O(N)O(N)이다.

증명

가로선 sxs_xsx​는 그 높이를 지나가는 두 막대 xxx와 x+1x+1x+1의 경로를 교환한다. 처음 만든 가로선열은 앞쪽 열과 그 역열의 연결이므로 전체 경로의 대응은 항등이다.

앞쪽에서 sa−1s_{a-1} 하나를 제거한 효과는 항등 대응에서 과 의 경로를 교환하는 것이다. 뒤쪽에서 하나를 제거한 효과는 과 의 도착 막대를 교환하는 것이다. 두 제거를 함께 적용하면 출발 막대 의 경로가 먼저 의 경로로, 이어서 도착 막대 로 이어진다. 또는 이면 그쪽 제거는 필요 없다.

서브태스크 1에서는 가로선 없이 질의만 출력한다. 서브태스크 2에서는 두 막대를 잇는 가로선 하나를 질의 전후에 토글한다. 서브태스크 3에서는 뒷부분의 가로선만 잠시 지우면 된다. 전체 조건에서는 앞부분과 뒷부분을 모두 사용한다.

Solution written by GPT5

N
−
1
​
,
⋯
,
s2​
,
s1​
a−1a-1
a−1
sa−1s_{a-1}sa−1​
b>1b>1b>1
2N−b2N-b2N−b
sb−1s_{b-1}sb−1​
2 a2\ a2 a
b−1
​
bbb
bbb
O
(
N
)
sa−1​
111
aaa
sb−1s_{b-1}sb−1​
111
bbb
aaa
111
bbb
a=1a=1a=1
b=1b=1b=1

모든 질의 뒤에 제거했던 가로선을 복구하므로 다음 질의의 시작 상태는 항상 항등 사다리이다. 따라서 각 질의가 독립적으로 목표를 만족한다.