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

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

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

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