보안 업체

면접 대비

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

요약
직선 위에 놓인 점들 사이 이동 시간이 주어지고, 시작점 a에서 출발해 모든 점을 방문할 때 각 점의 최초 도착 시각 합을 최소화한다.
난이도

보통10점 중 6점

유형
동적 계획법, 그리디, 배열, 누적 합
정답자
아직 제출이 없습니다

문제

명우는 보안 업체 직원으로, 강남역 주변에 있는 여러 상점을 도보로 순찰하는 일을 맡고 있다.

강남역 일대는 하나의 직선(선분)으로 나타낼 수 있으며, 명우의 회사와 상점들은 왼쪽부터 차례로 이 직선 위의 점 p1,p2,…,pNp_1, p_2, \dots, p_N 으로 표현된다. 회사는 pap_a 에 있고, 이 점을 시작점 s=pas = p_a 라고 한다. 명우는 ss 에서 순찰을 시작하여 모든 상점 pip_i 를 적어도 한 번씩 방문해야 한다.

이웃한 두 점 pip_i 와 pi+1p_{i+1} 사이를 오가는 데 걸리는 시간은 t[pi,pi+1]t[p_i, p_{i+1}] 이다. 점 pip_i 의 대기 시간 ℓi\ell_i 는 시작점 ss 를 출발한 뒤 pip_i 에 처음 도착하기까지 걸린 시간이다. 시작점 s=pas = p_a 자신의 대기 시간 ℓa\ell_a 는 00 이다. 명우는 모든 상점의 대기 시간의 합이 최소가 되도록 순찰 경로를 정해야 한다.

예를 들어 상점이 p1p_1 부터 p6p_6 까지 66 개 있고 시작점이 s=p3s = p_3 이며, t[p1,p2]=7t[p_1,p_2] = 7, t[p2,p3]=4t[p_2,p_3] = 4, t[p3,p4]=1t[p_3,p_4] = 1, t[p4,p5]=2t[p_4,p_5] = 2, t[p5,p6]=9t[p_5,p_6] = 9 라고 하자. 명우가 ss 에서 오른쪽으로 걷기 시작하면 대기 시간 ℓ4\ell_4 와 ℓ5\ell_5 는 각각 11 과 33 이 된다. 순찰 순서를 적절히 정하면 대기 시간의 합을 7171 로 만들 수 있으며, 이보다 더 작게 만드는 방법은 없다.

점의 개수 NN 과 이웃한 점들 사이의 이동 시간 t[pi,pi+1]t[p_i, p_{i+1}] (i=1,…,N−1i = 1, \dots, N-1) 이 주어질 때, 대기 시간의 합을 최소로 하는 값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 TT 가 주어진다. 각 테스트 케이스는 다음과 같이 구성된다.

  • 첫째 줄에 상점의 수 NN (1≤N≤1001 \le N \le 100) 이 주어진다.
  • 둘째 줄에 시작점의 위치 aa (1≤a≤N1 \le a \le N) 가 주어진다. aa 번째 점 pa=sp_a = s 가 시작점이다.
  • 이어지는 N−1N-1 개의 줄 중 ii 번째 줄에는 t[pi,pi+1]t[p_i, p_{i+1}] (1≤t[pi,pi+1]≤15 000 0001 \le t[p_i, p_{i+1}] \le 15\,000\,000) 이 주어진다.

출력

각 테스트 케이스마다 모든 상점을 순찰하는 모든 방법 중 대기 시간의 합의 최솟값을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    2
    6
    3
    7
    4
    1
    2
    9
    9
    5
    96
    24
    6
    2
    1
    3
    12
    48
    
    예상 출력
    71
    605