구간 덮기

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

요약
n x n 격자의 각 행에서 구간 [L(i), R(i)]의 모든 칸을 지나야 하며 왼쪽, 오른쪽, 아래로만 이동할 때 (1,1)에서 (n,n)까지 가는 최단 경로의 길이를 구한다.
난이도

보통10점 중 7점

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

문제

n×nn \times n 격자가 있고, 행과 열은 각각 11부터 nn까지 번호가 매겨져 있습니다 (1≤n≤200001 \le n \le 20000). 당신은 왼쪽 위 칸 (1,1)(1, 1)에서 출발합니다. 각 행 ii마다 두 정수 L(i)L(i)와 R(i)R(i)가 주어지며 (1≤L(i)≤R(i)≤n1 \le L(i) \le R(i) \le n), 이는 그 행 위의 수평 구간을 나타냅니다.

경로는 모든 행 ii에서 그 행 구간의 모든 칸을 방문해야 합니다:

(i,L(i)), (i,L(i)+1), …, (i,R(i)).(i, L(i)),\ (i, L(i)+1),\ \dots,\ (i, R(i)).

이동은 왼쪽, 오른쪽, 아래쪽으로만 할 수 있고, 위로는 절대 올라갈 수 없습니다. 같은 행에서 인접한 칸으로 한 칸 이동하면 11걸음, 행 ii에서 바로 아래 행 i+1i+1로 내려가는 것도 11걸음입니다. 위로 이동할 수 없으므로 행은 반드시 1,2,…,n1, 2, \dots, n 순서로 처리됩니다.

마지막 행 nn의 구간을 모두 방문한 뒤에는, 아직 그 위치에 있지 않다면 오른쪽 아래 칸 (n,n)(n, n)으로 이동합니다. (1,1)(1, 1)에서 출발하여 모든 구간을 방문하고 (n,n)(n, n)에 도착하는 최단 경로의 총 걸음 수를 구하세요.

입력

첫째 줄에 격자의 행과 열의 개수인 정수 nn이 주어집니다. 다음 nn개의 줄에는 각각 두 정수 L(i)L(i)와 R(i)R(i)가 주어지며 (1≤L(i)≤R(i)≤n1 \le L(i) \le R(i) \le n), 이는 행 ii의 구간의 양 끝점입니다.

출력

(1,1)(1, 1)에서 (n,n)(n, n)까지 모든 구간 [L(i),R(i)][L(i), R(i)]을 방문하는 최단 경로의 길이(걸음 수)를 정수 하나로 출력합니다.

예제1

  1. 예제 1

    입력
    6
    2 6
    3 4
    1 3
    1 2
    3 6
    4 5
    
    예상 출력
    24