canuc80k0509·10/50

Chia Bánh Tròn

Nộp bài trên LQDOJ

Bài 0.6 · Binary Search

Có chiếc bánh hình tròn, bánh thứ có bán kính . Chủ bữa tiệc cùng người bạn, tổng cộng người, đều phải nhận đúng một miếng bánh có cùng diện tích .

Mỗi chiếc bánh có thể được cắt thành nhiều miếng. Mỗi miếng phải nằm trọn trong một chiếc bánh; không được ghép phần từ hai chiếc bánh khác nhau. Phần bánh thừa có thể bỏ đi.

Hãy tìm diện tích lớn nhất có thể của .

Input

  • Dòng đầu chứa số nguyên - số bộ test.
  • Với mỗi bộ test:
  • Dòng đầu chứa hai số nguyên và .
  • Dòng thứ hai chứa số nguyên .

Output

  • Với mỗi bộ test, in diện tích lớn nhất của một miếng trên một dòng. Kết quả được chấp nhận nếu sai số tuyệt đối so với đáp án không quá .

Constraints

  • .
  • .
  • .
  • Số người cần phục vụ là .

Scoring

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

Example

Test 1

Input

2
3 3
4 4 4
2 1
1 2

Output

25.1327
6.2832

Giải thích: Ở bộ đầu có bốn người; diện tích 8π cho phép một bánh tạo hai phần và hai bánh còn lại mỗi bánh tạo một phần. Ở bộ sau, bánh bán kính được chia thành hai phần bằng nhau, mỗi phần có diện tích 2π.

Lời giải tóm tắt
  • Ý tưởng: Với diện tích miếng thử S>0, bánh i tạo được ⌊πr_i²/S⌋ miếng độc lập. S khả thi khi tổng số miếng ít nhất F+1. Khi giảm S, số miếng không thể giảm, nên miền khả thi là một đoạn từ 0 đến đáp án.
  • Ý tưởng: Chặt nhị phân số thực trên [0,max πr_i²] trong số vòng cố định đủ lớn. Giữ lo là diện tích khả thi và hi là cận không nhỏ hơn đáp án; sau 120 vòng, sai số nhỏ hơn rất nhiều 10^-3.
  • Ý tưởng: Tính đúng đắn: hàm đếm xét đúng số miếng nguyên có thể cắt riêng từ từng bánh, rồi cộng vì các bánh độc lập. Last true của điều kiện có đủ F+1 miếng chính là diện tích chung lớn nhất.
  • Ý tưởng: Độ phức tạp là O(120N) thời gian mỗi bộ test và O(N) bộ nhớ.