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

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

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

Bitonic Tour

問題に戻る

解説

조건을 만족하는 투어를 정점 111에서 NNN으로 가는 서로 겹치지 않는 두 증가 경로로 나누어 생각한다. 두 경로는 양 끝점 1,N1,N1,N만 공유한다.

D[i][j]D[i][j]D[i][j]를 111부터 jjj까지의 정점을 두 경로에 배분했을 때, 두 경로의 끝점이 각각 i,ji,ji,j인 최소 가중치로 정의한다 (i<ji<ji<j). 처음에는 D[1][2]=W12D[1][2]=W_{12}D[1][2]=W12​이다. 새 정점 jjj를 추가할 때 i<j−1i<j-1i<j−1이면 j−1j-1j−1 뒤에 jjj를 붙여 D[i][j]=D[i][j−1]+Wj−1,jD[i][j]=D[i][j-1]+W_{j-1,j}D[i][j]=D[i][j−1]+Wj−1가 된다. i=j−1i=j-1i=j−1이면 다른 경로의 끝점 k<j−1k<j-1k<j−1 뒤에 jjj를 붙이므로 D[j−1][j]=min⁡k<j−1(D[k][j−1]+Wk,j)D[j-1][j]=\min_{k<j-1}(D[k][j-1]+W_{k,j})D[j−1][j]=mink<j−1​(이다. 존재하지 않는 간선은 사용할 수 없다.

모든 정점을 처리한 뒤 끝점 iii와 NNN을 연결한다. D[i][N]+Wi,ND[i][N]+W_{i,N}D[i][N]+Wi,N​의 최솟값이 답이다. 각 를 갱신한 직전 끝점 를 저장하면 선택한 간선들을 거슬러 올라가 두 경로를 복원할 수 있다. 두 경로를 이어 방문 순서를 출력한다. 불가능한 상태는 충분히 큰 값으로 관리하고, 답이 없으면 을 출력한다. 가중치가 인 간선도 존재하므로 간선의 유무는 인지로 판단한다. 최댓값은 이므로 64비트 정수를 사용한다.

시간 복잡도는 O(N2)O(N^2)O(N2), 공간 복잡도는 O(N2)O(N^2)O(N2)이다. 서브태스크 111은 중간 정점들을 두 경로에 배분하는 모든 방법을 열거해도 된다.

Solution written by GPT6

,
j
​
D
[
k
]
[
j
−
1]+
Wk,j​)
D[j−1][j]D[j-1][j]D[j−1][j]
kkk
−1-1−1
000
−1-1−1
2 000⋅1092\,000\cdot10^92000⋅109