공항 무빙워크 (작은 입력)

시간 제한5초메모리 제한512 MB

요약
제한된 달리기 시간을 복도와 무빙워크 구간에 나눠 써서 게이트까지 이동 시간을 최소화합니다.
난이도

보통10점 중 5점

유형
그리디, 정렬
정답자
아직 제출이 없습니다

문제

공항의 0 지점에 서 있다. 길이가 XX인 복도 끝에 탑승구가 있고, 비행기는 곧 출발한다. 복도에는 무빙워크가 놓여 있고, ii번째 무빙워크는 속도 wiw_i로 움직인다. 무빙워크 위에서 걷거나 뛰면 (자신의 속도 + wi+\ w_i)의 속도로 이동한다. 무빙워크는 자리를 옮기지 않고 속도만 더해 준다. 무빙워크끼리는 겹치지 않는다. 복도의 어느 지점에도 무빙워크는 많아야 하나뿐이지만, 한 무빙워크가 끝나는 지점에서 다른 무빙워크가 시작할 수는 있다.

평소 걷는 속도는 SS다. 비행기를 놓칠까 걱정되어 조금 뛸 수 있다. 속도 RR로 합쳐서 최대 tt초 동안 뛸 수 있다. tt초를 연속으로 써야 하는 것은 아니다. 원하는 만큼 여러 구간으로 나눠 써도 되고, 일부를 쓰지 않고 남겨도 된다.

언제 걷고 언제 뛸지 가장 빨리 도착하도록 골랐을 때, 탑승구까지 걸리는 시간을 구하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 줄에는 정수 다섯 개 XX, SS, RR, tt, NN이 공백으로 구분되어 주어진다. 차례대로 복도의 길이(미터), 걷는 속도(초당 미터), 뛰는 속도(초당 미터), 뛸 수 있는 최대 시간(초), 무빙워크의 개수다.

이어지는 NN개의 줄에는 정수 세 개 BiB_i, EiE_i, wiw_i가 주어진다. 차례대로 무빙워크가 시작하는 지점, 끝나는 지점(출발점에서 미터), 무빙워크의 속도(초당 미터)다. 무빙워크는 시작 지점이 커지는 순서로 주어진다.

제한

  • 1≤T≤401 \le T \le 40
  • 1≤X≤1001 \le X \le 100
  • 1≤S<R≤1001 \le S < R \le 100
  • 1≤t≤1001 \le t \le 100
  • 1≤N≤201 \le N \le 20
  • 0≤Bi<Ei≤X0 \le B_i < E_i \le X
  • Ei≤Bi+1E_i \le B_{i+1}
  • 1≤wi≤1001 \le w_i \le 100

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 최적으로 걷고 뛰었을 때 XX 지점에 도착하는 데 걸리는 시간(초)이다.

yy는 소수점 아래 여섯째 자리까지 반올림해 항상 여섯 자리로 출력한다. 테스트 데이터에서 정확한 답은 반올림 경계에서 10−810^{-8} 이상 떨어져 있으므로 배정밀도 실수로 계산해도 된다.

힌트

첫 번째 예제에서는 출발하자마자 1초 동안 뛰는 것이 가장 좋다.

예제1

  1. 예제 1

    입력
    3
    10 1 4 1 2
    4 6 1
    6 9 2
    12 1 2 4 1
    6 12 1
    20 1 3 20 5
    0 4 5
    4 8 4
    8 12 3
    12 16 2
    16 20 1
    
    예상 출력
    Case #1: 4.000000
    Case #2: 5.500000
    Case #3: 3.538095