원자력 자동차 경주

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

요약
체크포인트마다 타이어 교체 여부를 정해 최근 교체 지점부터의 거리에 따라 속도가 변하는 모델에서 전체 완주 시간을 최소화하는 전략을 구합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 수학, 시뮬레이션
정답자
아직 제출이 없습니다

문제

2020년, 원자력으로 움직이는 자동차들의 경주가 열린다. 오늘날의 자동차 경주와 달리 연료 보급은 각 팀의 관심사가 아니다. 자동차는 재급유 없이 코스 전체를 달릴 수 있다. 대신 가장 중요한 요소는 타이어이다. 각 팀은 자동차의 타이어를 어디에서 교체할지 신중하게 계획해야 한다.

이 경주는 코스에 nn개의 체크포인트가 있는 도로 경주이다. 각 체크포인트의 출발점으로부터의 거리는 a1,a2,…,ana_1, a_2, \ldots, a_n(킬로미터)이며, nn번째 체크포인트가 결승점이다. i<ni < n인 ii번째 체크포인트에서는 타이어를 교체할 수 있고, 각 체크포인트에서 교체할지 말지는 팀이 자유롭게 정한다. 타이어 교체에는 (감속과 가속에 드는 시간을 포함하여) bb초가 걸린다. 교체하지 않으면 시간 손실은 없다.

타이어를 갓 교체한 직후에는 타이어 온도가 설계상 최적값보다 낮아 빠르게 달릴 수 없다. 반대로 교체 없이 오래 달리면 타이어가 닳아 노면을 잘 붙잡지 못해 역시 빠르게 달릴 수 없다. xx를 가장 최근에 타이어를 교체한 지점(또는 출발점)으로부터의 거리(킬로미터, 음이 아닌 정수)라고 하자. xx에서 x+1x+1까지의 1킬로미터 구간을 달리는 데 걸리는 시간은 다음과 같다(초).

  • x≥rx \ge r이면 1v−e×(x−r)\dfrac{1}{v - e \times (x - r)}
  • x<rx < r이면 1v−f×(r−x)\dfrac{1}{v - f \times (r - x)}

여기서 rr, vv, ee, ff는 주어지는 상수이다. 결승점까지의 총 시간을 최소로 하는 타이어 교체 전략을 구하여라.

입력

입력은 여러 개의 데이터 세트로 이루어지며, 각 데이터 세트는 하나의 경주를 나타낸다. 데이터 세트의 형식은 다음과 같다.

n
a1 a2 ... an
b
r v e f

한 줄에 여러 값이 있으면 공백 하나로 구분되며, 각 기호의 의미는 위 설명과 같다.

nn은 n≤100n \le 100인 양의 정수이다. 각 aia_i는 0<a1<a2<⋯<an≤100000 < a_1 < a_2 < \cdots < a_n \le 10000을 만족하는 양의 정수이다. bb는 b≤100.0b \le 100.0인 양의 실수이다. rr은 0≤r≤an−10 \le r \le a_n - 1을 만족하는 음이 아닌 정수이다. vv, ee, ff는 각각 양의 실수이며, v−e×(an−1−r)≥0.01v - e \times (a_n - 1 - r) \ge 0.01과 v−f×r≥0.01v - f \times r \ge 0.01이 성립한다고 가정해도 좋다.

입력의 끝은 00 하나만 있는 줄로 표시된다.

출력

각 데이터 세트마다, 최적 전략을 택했을 때 결승점에 도달하는 최소 총 시간(초)을 소수점 아래 정확히 넷째 자리까지 반올림하여 한 줄에 출력한다(예: printf의 %.4f 형식). 공백 등 불필요한 문자는 출력하지 않는다.

예제1

  1. 예제 1

    입력
    2
    2 3
    1.0
    1 1.0 0.1 0.3
    5
    5 10 15 20 25
    0.15
    1 1.0 0.04 0.5
    10
    1783 3640 3991 4623 5465 5481 6369 6533 6865 8425
    4.172
    72 59.4705 0.0052834 0.0611224
    0
    
    예상 출력
    3.5397
    31.9249
    168.6682