만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

DDR

면접 대비

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

요약
N개의 스텝마다 한 개 또는 두 개의 화살표를 순서대로 밟을 때, 두 발이 이동하는 총 유클리드 거리의 최솟값을 구합니다.
난이도

보통10점 중 5점

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

문제

바샤는 댄스 댄스 레볼루션을 즐긴다. 화면에 나타나는 순서대로 화살표를 밟되 실수는 한 번도 하지 않고, 두 발이 움직인 총 거리를 최대한 짧게 줄이는 것이 목표다. 바닥에는 크기가 같은 정사각형 발판 다섯 개가 있다. 가운데 발판에는 화살표가 없다. 나머지 네 발판은 가운데를 기준으로 사방에 놓여 있으며 각각 왼쪽, 오른쪽, 위, 아래 화살표다. L, R, U, D로 표기한다. 배치는 아래 그림과 같다. 노래는 N개의 순간으로 이루어진다. 각 순간에는 화살표 한 개 또는 두 개를 동시에 눌러야 한다. 발은 다른 발의 위치와 상관없이 다섯 발판 중 어디에든 놓을 수 있고, 두 발을 같은 발판에 놓아도 된다. 발은 어떤 위치에서든 다른 위치로 옮길 수 있다. 바샤는 두 발을 가운데 발판에 올린 채 시작한다. 노래가 끝나면 두 발은 어디에 있어도 된다. 눌러야 할 화살표는 순서대로 모두 눌러야 한다. 그 순간 누를 필요가 없는 화살표 위에 발을 놓아도 되고, 언제든 한쪽 또는 양쪽 발을 가운데 발판에 둘 수 있다. 화살표를 누르려면 발을 해당 발판의 중심에 놓아야 한다. 발은 점으로 취급한다. 가운데는 (0, 0), 오른쪽은 (1,0)(1, 0), 위는 (0,1)(0, 1), 왼쪽은 (−1,0)(-1, 0), 아래는 (0,−1)(0, -1)이다. 노래 동안 두 발이 이동해야 하는 유클리드 거리의 합의 최솟값을 구하라.

입력

첫 줄에 정수 N(1 ≤ N ≤ 100,000)이 주어진다. 이어지는 N개 줄의 각 줄은 먼저 그 순간에 눌러야 할 화살표 수 k_i(k_i는 1 또는 2)로 시작한다. 그다음에 L, R, U, D 중에서 서로 다른 k_i개의 문자가 주어진다. k_i가 2이면 공백으로 구분한다.

출력

이동 거리의 합의 최솟값을 실수 하나로 출력한다. 절대 오차 또는 상대 오차가 10−910^{-9} 이하이면 정답으로 인정한다.

힌트

첫 번째 예제에서 바샤는 왼발을 아래 발판으로, 오른발을 위 발판으로 옮겨 처음 두 화살표를 누른다. 그다음 두 발을 대각선으로 각각 왼쪽과 오른쪽 발판으로 옮긴다. 총 거리는 1+1+2+2≈4.82842712471 + 1 + \sqrt{2} + \sqrt{2} \approx 4.8284271247이다. 두 번째 예제에서는 한 발을 위 발판에 놓으면 되고, 이때 거리는 1이다.

예제2

  1. 예제 1

    입력
    3
    1 U
    1 D
    2 L R
    
    예상 출력
    4.8284271247
    
  2. 예제 2

    입력
    2
    1 U
    1 U
    
    예상 출력
    1.0000000000