DOJ logoDOJ
問題
最近追加された問題保存した問題Workbooks
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord認証を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

Dadas and Mog's Binary Sequence

問題に戻る

解説

문자열 CCC에 대해 Constraints 섹션에서 정의한 값 H0(C),H1(C),…,HN(C)H_0(C),H_1(C),\ldots,H_N(C)H0​(C),H1​(C),…,HN​(C)를 생각하자. 각 문자를 하나 읽을 때 값은 정확히 111만큼 증가하거나 감소한다.

각 iii (1≤i≤N1 \leq i \leq N1≤i≤N)에 대해

Ei(C)=min⁡(Hi−1(C),Hi(C))E_i(C)=\min(H_{i-1}(C),H_i(C))Ei​(C)=min(Hi−1​(C

로 정의한다. Ei(C)=xE_i(C)=xEi​(C)=x라는 것은 iii번째 문자를 읽을 때 정수 xxx와 x+1x+1x 사이를 한 번 지나갔다는 뜻이다.

구간 [l,r][l,r][l,r]에 000과 111이 같은 개수만큼 들어 있다는 조건은 Hl−1(C)=Hr(C)H_{l-1}(C)=H_r(C)Hl와 같다. 연산을 수행하면 이 구간에서 지나간 경계들의 순서만 반대가 된다. 따라서 의 순서가 뒤집히며, 다른 는 변하지 않는다.

그러므로 각 정수 xxx에 대해 xxx와 x+1x+1x+1 사이를 지나간 횟수는 변하지 않는다. 즉, AAA를 BBB로 바꿀 수 있으려면 다음 두 멀티셋이 같아야 한다.

{E1(A),E2(A),…,EN(A)},{E1(B),E2(B),…,EN(B)}\{E_1(A),E_2(A),\ldots,E_N(A)\},\qquad \{E_1(B),E_2(B),\ldots,E_N(B)\}{E1​(A),E

이 조건은 충분하기도 하다. E(A)E(A)E(A)를 현재 수열, E(B)E(B)E(B)를 목표 수열이라고 하고 왼쪽부터 같은 값으로 만들어 보자.

현재 i−1i-1i−1번째 위치까지 같게 만들었다고 하자. Ei(A)=Ei(B)E_i(A)=E_i(B)Ei​(A)=Ei​라면 그대로 다음 위치로 넘어간다.

두 값이 다르다면 현재 높이에서 Ei(A)E_i(A)Ei​(A)가 나타내는 경계와 Ei(B)E_i(B)Ei​(B)가 나타내는 경계는 서로 반대 방향에 있다. 현재 경로는 먼저 잘못된 방향으로 움직였으므로, 목표 경계를 처음 지날 때에는 현재 높이에서 목표 방향으로 떠난다. 그 목표 경계를 두 번째로 지날 때에는 다시 현재 높이로 돌아온다.

따라서 Ei(B)E_i(B)Ei​(B)가 현재 수열의 iii번째 위치 이후에서 두 번째로 나타나는 위치를 jjj라고 하면, 원래 문자열의 구간 [i,j][i,j][i,j은 시작 높이와 끝 높이가 같다. 즉, 이 구간에는 과 이 같은 개수만큼 들어 있어 연산할 수 있다.

이 구간에 연산하면 Ei(A),Ei+1(A),…,Ej(A)E_i(A),E_{i+1}(A),\ldots,E_j(A)Ei​(A),Ei+1​(A),…,의 순서가 뒤집힌다. 마지막 값이었던 가 번째 위치로 오므로, 새롭게 번째 위치까지 목표와 같아진다.

가능 조건이 성립하면 필요한 두 번째 등장 위치는 항상 존재한다. 각 위치마다 뒤쪽을 선형으로 탐색하고, 찾은 구간을 직접 뒤집으면 된다. 탐색과 뒤집기에 각각 O(N)O(N)O(N) 시간이 들고 이를 NNN번 이하 수행하므로 전체 시간 복잡도는 O(N2)O(N^2)O(N2)이다. 필요한 배열과 답을 저장하는 메모리 복잡도는 O(N)O(N)O이다.

각 위치에서 연산을 많아야 한 번 수행하므로 출력하는 연산 수는 NNN 이하이다.

Solution written by GPT5.6

)
,
Hi​
(
C
))
+
1
−
1
​
(
C
)
=
Hr​(C)
El(C),El+1(C),…,Er(C)E_l(C),E_{l+1}(C),\ldots,E_r(C)El​(C),El+1​(C),…,Er​(C)
Ei(C)E_i(C)Ei​(C)
2
​
(
A
)
,
…
,
EN​
(
A
)}
,
{
E1​
(
B
)
,
E2​
(
B
)
,
…
,
EN​
(
B
)}
(
B
)
]
000
111
Ej​
(
A
)
Ej(A)=Ei(B)E_j(A)=E_i(B)Ej​(A)=Ei​(B)
iii
iii
(
N
)