두 등산가

시간 제한1초메모리 제한128 MB

요약
양 끝 높이가 같은 산맥이 주어질 때, 두 등반가가 항상 같은 높이를 유지하며 서로의 시작점을 바꿀 때 가능한 두 이동 길이 합의 최솟값을 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 그리디, 기하, 구현
정답자
아직 제출이 없습니다

문제

두 등산가가 어떤 산맥의 양쪽 끝에서, 정확히 같은 높이에 서 있다. 두 사람은 산맥을 따라 걸어서 서로가 출발한 지점에 도달하려 하는데, 이동하는 동안 두 사람의 높이는 항상 서로 같아야 한다. 높이를 같게 유지하기 위해 각 등산가는 산맥을 따라 앞으로도, 뒤로도 움직일 수 있다. 산맥이 출발 높이보다 낮아지는 곳이 없다면, 두 사람은 항상 이런 방식으로 서로의 출발 지점을 맞바꿀 수 있다. 산맥의 모양이 주어질 때, 두 등산가가 걷는 거리의 합의 최솟값을 구하여라.

산맥은 꼭짓점이 pi=(xi,yi)p_i = (x_i, y_i)인 꺾은선 P=(p1,p2,…,pn)P = (p_1, p_2, \dots, p_n)으로 나타낸다. 이 꺾은선은 xx 방향으로 단조롭다. 즉 x1<x2<⋯<xnx_1 < x_2 < \dots < x_n이며, 따라서 xx에 대한 조각별 일차 함수의 그래프이다.

한 등산가의 이동은 PP 위의 점들의 수열 W=(w1,w2,…,wm)W = (w_1, w_2, \dots, w_m)으로, 이웃한 두 점 (wj,wj+1)(w_j, w_{j+1})을 잇는 부분이 모두 PP 위에 있어야 한다. 한 걸음 (wj,wj+1)(w_j, w_{j+1})의 길이는 높이 변화량 ∣y(wj+1)−y(wj)∣|y(w_{j+1}) - y(w_j)|만으로 측정하며(수평 이동은 길이에 포함되지 않는다), 이동 전체의 길이는 각 걸음 길이의 합이다. 등산가 A는 p1p_1에서, 등산가 B는 pnp_n에서 출발한다. 두 사람은 같은 높이에서 출발하므로 y1=yny_1 = y_n이다.

예를 들어 위 그림에서 왼쪽 등산가의 이동은 (a,d,c,e,g,f,h,j,i,l,o,p,r,p,o,m,o,p,s)(a, d, c, e, g, f, h, j, i, l, o, p, r, p, o, m, o, p, s)이고, 이때 두 등산가가 걷는 거리의 합은 120120으로 이것이 최솟값이다.

입력

첫째 줄에 테스트 케이스의 수 TT (1≤T≤31 \le T \le 3)가 주어진다.

각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 꺾은선 PP의 꼭짓점 개수 nn (3≤n≤10003 \le n \le 1000)이 주어진다. 이어지는 nn개의 줄에는 점 pip_i의 좌표가 p1,p2,…,pnp_1, p_2, \dots, p_n의 순서로, 각 줄마다 두 정수 xix_i와 yiy_i (0≤xi,yi≤100000 \le x_i, y_i \le 10000)로 주어진다. xx 좌표는 순증가한다.

등산가 A는 p1p_1에서, 등산가 B는 pnp_n에서 출발하므로 y1=yny_1 = y_n이다. 모든 테스트 케이스에서 산맥은 출발 높이보다 낮아지지 않으며, 꼭짓점의 높이 yiy_i는 양 끝점이 출발 높이를 공유하는 것(y1=yny_1 = y_n)을 제외하면 모두 서로 다르다.

출력

각 테스트 케이스마다, 두 등산가가 걷는 거리의 합의 최솟값을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    3
    3
    0 0
    5 5
    10 0
    5
    0 0
    2 10
    3 5
    4 15
    5 0
    7
    5 10
    6 15
    7 11
    8 20
    9 12
    11 14
    13 10
    
    예상 출력
    20
    100
    120