랠리

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

요약
최대 25개의 주유소 중 일부에서 연료를 채우며 총 주행 시간과 주유 시간의 합을 최소화한다.
난이도

보통10점 중 7점

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

문제

자동차 랠리를 준비하고 있으며, 경로에 있는 어떤 주유소에서 연료를 넣을지 정해야 합니다.

규칙은 다음과 같습니다.

  • 주유소에서 한 번 주유하는 데 TT분이 걸립니다 (1≤T≤1041 \le T \le 10^4).
  • 연료 탱크에는 최대 Fmax⁡F_{\max}리터까지 담을 수 있습니다 (103≤Fmax⁡≤10610^3 \le F_{\max} \le 10^6).
  • 11킬로미터를 달릴 때마다 그 끝에서 연료량 FF가 즉시 ΔF\Delta_F리터만큼 줄어듭니다 (1≤ΔF≤501 \le \Delta_F \le 50).
  • 자동차의 속도 SS(분당 킬로미터)는 연료량이 줄수록 커지지만, 연료가 없으면 전혀 움직이지 못합니다. S={Smax⁡−C⋅FF>0 일 때0F=0 일 때S = \begin{cases} S_{\max} - C \cdot F & F > 0 \text{ 일 때} \\ 0 & F = 0 \text{ 일 때} \end{cases} 여기서 103≤Smax⁡≤10610^3 \le S_{\max} \le 10^6, 1≤C≤1021 \le C \le 10^2이며, 입력은 항상 F>0F > 0인 동안 S>0S > 0이 되도록 주어집니다(즉 C⋅Fmax⁡<Smax⁡C \cdot F_{\max} < S_{\max}). 한 킬로미터를 달리는 동안 연료량은 일정하므로, 그 구간을 지나는 데 1/S1/S분이 걸립니다.
  • 랠리의 전체 길이는 DD킬로미터입니다 (103≤D≤10610^3 \le D \le 10^6).
  • 주유소는 NN개 있습니다 (1≤N≤251 \le N \le 25).
  • ii번째 주유소는 출발점에서 MiM_i킬로미터 떨어져 있습니다 (0<Mi<D0 < M_i < D, 그리고 i<ji < j이면 Mi<MjM_i < M_j).

자동차는 00킬로미터 지점에서 무료로 가득 채워 출발하고 DD킬로미터 지점에서 완주합니다. 주유소들 중 원하는 부분집합에서 연료를 넣을 수 있으며, 탱크 용량을 넘지 않는 범위에서 원하는 만큼 넣을 수 있습니다. 주유 정차는 한 번마다 TT분이 듭니다. 전체 시간은 주행 시간(DD킬로미터 전체에 대한 1/S1/S의 합)에 실제로 정차한 주유 횟수마다 TT분을 더한 값입니다.

랠리를 완주하는 데 걸리는 최소 전체 시간을 구하세요.

입력

입력에는 다음 정수들이 각각 한 줄에 하나씩, 이 순서대로 주어집니다: TT, Fmax⁡F_{\max}, ΔF\Delta_F, Smax⁡S_{\max}, CC, DD, NN, 그리고 M1,M2,…,MNM_1, M_2, \ldots, M_N.

출력

최소 전체 시간(분)을 소수점 아래 정확히 여섯 자리까지 반올림하여 한 줄에 출력합니다.

예제3

  1. 예제 1

    입력
    3
    20000
    2
    150000
    2
    30000
    2
    10000
    20000
    
    예상 출력
    6.232620
    
  2. 예제 2

    입력
    10000
    500000
    50
    1000000
    1
    9000
    3
    2500
    5000
    7500
    
    예상 출력
    0.011957
    
  3. 예제 3

    입력
    5
    1200
    1
    1000000
    1
    700
    1
    600
    
    예상 출력
    0.000700