canuc80k5705·6/26

Điểm Hẹn Nhanh Nhất

Nộp bài trên LQDOJ

Bài 57 · Ternary Search

Trên một đường thẳng có người. Người ở , có vận tốc tối đa và có thể đi hai chiều hoặc đứng yên. Chọn tọa độ thực làm điểm hẹn. Thời gian người tới đó là . Hãy tìm thời gian nhỏ nhất để mọi người cùng có mặt.

Input

  • Dòng đầu: .
  • Dòng hai: .
  • Dòng ba: .

Output

  • In thời gian nhỏ nhất; sai số tuyệt đối hoặc tương đối không quá .

Constraints

  • .
  • .

Scoring

  • Subtask ( điểm): , mọi giá trị .
  • Subtask ( điểm): đầy đủ.

Example

Test 1

Input

3
1 11 21
1 2 1

Output

10.000000000000000

Giải thích: Chọn ; hai người ngoài cùng đều cần giây và không thể nhanh hơn vì họ cách nhau , cùng vận tốc .

Lời giải tóm tắt
  • Ý tưởng: Đặt F(p)=max_i |p-x_i|/v_i. Mỗi thành phần là một chữ V lồi, maximum của các hàm lồi vẫn lồi. Điểm tối ưu nằm trong [min x_i,max x_i].
  • Ý tưởng: Tam phân liên tục đoạn này trong 220 vòng. Mỗi lần đánh giá duyệt mọi người để lấy thời gian lớn nhất. Tính lồi bảo đảm phép so sánh tại hai điểm một phần ba không bỏ hết miền tối ưu; đoạn co về một điểm nên giá trị in ra hội tụ tới minimum.
  • Ý tưởng: Độ phức tạp O(220n), bộ nhớ O(n).