아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

강 건너기

면접 대비

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

요약
소 N마리를 순서대로 여러 무리로 나눠 건널 때, 각 무리의 건너는 시간은 M에 누적 추가 시간을 더한 값이고 마지막을 제외한 무리마다 M분의 귀환 시간이 더해질 때, 총 시간의 최솟값을 구한다.
난이도

보통10점 중 6점

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

문제

농부 존은 소 NN마리(1≤N≤25001 \le N \le 2500)를 강 건너편으로 옮기려고 합니다. 뗏목은 하나뿐이며, 강을 건널 때마다 존이 반드시 함께 타야 합니다.

뗏목에 소를 태울수록 속도가 느려집니다. 존 혼자 타면 뗏목은 MM분(1≤M≤10001 \le M \le 1000)에 강을 건넙니다. 소를 한 마리씩 태울 때, ii번째로 태우는 소는 i−1i-1마리를 태웠을 때보다 MiM_i분(1≤Mi≤10001 \le M_i \le 1000)이 더 걸리게 만듭니다. 즉 소 kk마리를 태운 뗏목은 M+M1+M2+⋯+MkM + M_1 + M_2 + \cdots + M_k분에 강을 건넙니다. 소들은 서로 구분되지 않으며, 함께 타는 마릿수만 중요하고, 한계 비용은 M1,M2,…M_1, M_2, \ldots 순서대로 적용됩니다.

존은 여러 번에 나누어 소를 실어 나를 수 있습니다. 마지막을 제외한 각 왕복에서는 존이 혼자 돌아오며, 이때도 MM분이 걸립니다. 돌아오는 시간을 포함하여 모든 소 NN마리를 건너편으로 옮기는 데 걸리는 최소 시간을 구하세요.

입력

  • 첫째 줄: 공백으로 구분된 두 정수 NN과 MM.
  • 둘째 줄부터 N+1N+1번째 줄까지: i+1i+1번째 줄에 정수 MiM_i가 하나씩 주어집니다.

출력

  • 모든 소를 건너편으로 옮기는 최소 시간을 한 줄에 출력합니다.

힌트

소가 다섯 마리 있고 건너는 시간이 다음과 같다고 합시다. 존 혼자면 10분, 소 한 마리와 함께면 13분, 두 마리 17분, 세 마리 23분, 네 마리 123분, 다섯 마리 모두 124분입니다. 한 가지 좋은 방법은 소 세 마리를 태워 건너고(23분), 혼자 돌아온 뒤(10분), 남은 두 마리를 태워 건너는 것(17분)으로, 합계 23+10+17=5023 + 10 + 17 = 50분입니다.

예제2

  1. 예제 1

    입력
    5 10
    3
    4
    6
    100
    1
    
    예상 출력
    50
    
  2. 예제 2

    입력
    1 10
    5
    
    예상 출력
    15