canuc80k5725·26/26

Đường Tròn Bao Nhỏ Nhất

Nộp bài trên LQDOJ

Bài 57 · Ternary Search

Cho điểm phân biệt trên mặt phẳng. Hãy tìm bán kính nhỏ nhất của một đường tròn chứa tất cả các điểm ở bên trong hoặc trên đường tròn. Tâm đường tròn có thể là bất kỳ điểm thực nào.

Input

  • Dòng đầu chứa .
  • dòng tiếp theo, mỗi dòng chứa hai số nguyên .

Output

  • In bán kính nhỏ nhất. Sai số tuyệt đối hoặc tương đối không vượt quá .

Constraints

  • .
  • .
  • Các điểm đôi một khác nhau.

Scoring

  • Subtask ( điểm): .
  • Subtask ( điểm): không có giới hạn bổ sung.

Example

Test 1

Input

4
0 0
0 2
2 0
2 2

Output

1.414213562373095

Giải thích: Tâm cách cả bốn điểm đúng , nên bán kính là đủ; hai đỉnh đối diện cách nhau , vì vậy không thể dùng bán kính nhỏ hơn.

Lời giải tóm tắt
  • Ý tưởng: Với tâm (x,y), đặt F(x,y)=max_i((x-x_i)^2+(y-y_i)^2). Mỗi khoảng cách bình phương là hàm lồi, nên maximum của chúng cũng lồi.
  • Ý tưởng: Khi cố định x, tam phân y trên [0,1000] để tìm giá trị nhỏ nhất. Hàm giá trị sau khi tối ưu một tọa độ vẫn lồi theo x, vì F jointly convex trên miền hình chữ nhật; do đó tiếp tục tam phân ngoài theo x. Có thể giới hạn tâm trong [0,1000]^2, bởi chiếu một tọa độ nằm ngoài về biên gần nhất không tăng khoảng cách tới bất kỳ điểm đầu vào nào. Cuối cùng lấy căn của khoảng cách bình phương lớn nhất. Độ phức tạp O(nI^2), bộ nhớ O(n).