DOJ logoDOJ
문제
최근 추가된 문제들저장한 문제
카테고리DLC대회그룹팀게시판
랭킹
문제 풀이 랭킹스트릭 랭킹DOJ Power 랭킹
현황
문제 제안로그인회원가입
DOJ logoDOJ

OI 서브태스크 채점, Elo 레이팅, Discord 인증을 갖춘 커뮤니티 온라인 저지.

문제
문제 목록카테고리
커뮤니티
대회랭킹게시판공지사항외부 대회 개최이용 안내
계정
로그인회원가입채점 현황
정책
이용약관DLC 이용 규칙개인정보 처리방침API 사용 설명서언어별 채점 환경대회 순위 보상레이팅과 퍼포먼스
© 2026 DOJ
모든 권리 보유
해설

바이토닉 투어

문제로 돌아가기

해설

조건을 만족하는 투어를 정점 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