아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

화초에 물 주기 (라지)

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

요약
서로 겹치지 않는 화분 원들이 주어질 때, 반지름 R인 두 원으로 모든 화분 원을 완전히 덮는 최소 R을 구한다.
난이도

어려움10점 중 9점

유형
기하, 이분 탐색, 그리디, 완전 탐색
정답자
아직 제출이 없습니다

문제

온실에 물을 줘야 하는 화초가 여러 개 있다. 화초 하나가 차지하는 영역은 원이고, 어떤 두 화초도 서로 겹치거나 접하지 않는다.

스프링클러를 두 대 산다. 스프링클러 한 대는 반지름이 RR인 원 안의 모든 지점에 물을 뿌린다. 한 대는 아침에 돌고 다른 한 대는 밤에 돈다. 화초가 물을 충분히 받으려면 그 화초의 영역 전체가 아침에 젖거나, 영역 전체가 밤에 젖어야 한다. 즉 화초를 나타내는 원은 스프링클러가 물을 뿌리는 두 원 중 적어도 하나에 완전히 들어가야 한다.

스프링클러는 천장에 달기 때문에 스프링클러의 위치가 화초의 영역 안이어도 된다.

각 화초의 중심과 반지름이 주어진다. 스프링클러 두 대를 알맞게 놓아 모든 화초에 물을 줄 수 있는 최소 반지름 RR을 구하라.

입력

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

각 테스트 케이스는 다음 형식이다.

  • 첫째 줄에 화초의 개수 NN이 주어진다.
  • 다음 NN개 줄에 화초 하나의 정보가 정수 세 개 X Y R로 주어진다. (X,Y)(X, Y)는 화초의 중심이고 RR은 화초의 반지름이다.

제한

  • 입력의 모든 수는 정수다.
  • 1≤X≤10001 \le X \le 1000
  • 1≤Y≤10001 \le Y \le 1000
  • 1≤R≤1001 \le R \le 100
  • 1≤C≤301 \le C \le 30
  • 1≤N≤401 \le N \le 40
  • 어떤 두 화초도 서로 겹치거나 접하지 않는다.

출력

각 테스트 케이스마다 Case #x: R 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, RR은 스프링클러의 최소 반지름이다. RR은 반올림해서 소수점 아래를 정확히 네 자리 출력한다.

테스트 데이터의 모든 정답은 반올림 경계에서 10−510^{-5} 이상 떨어져 있다. 오차가 10−610^{-6} 이하인 풀이는 같은 값을 출력한다.

힌트

예제의 첫 번째 테스트 케이스에서는 (20,15)(20, 15)를 중심으로 하는 반지름 7 이상의 스프링클러가 앞의 두 화초에 물을 주고, 반지름 3인 스프링클러가 (40,10)(40, 10)의 화초에 물을 준다.

두 번째 테스트 케이스에서는 두 스프링클러 중 하나의 반지름이 적어도 8이어야 한다. (30,10)(30, 10)의 화초도 두 원 중 하나에 완전히 들어가야 한다.

예제3

  1. 예제 1

    입력
    5
    3
    20 10 2
    20 20 2
    40 10 3
    3
    20 10 3
    30 10 3
    40 10 3
    5
    100 100 1
    140 100 1
    100 130 1
    100 500 1
    150 500 1
    8
    100 100 1
    110 100 1
    100 110 1
    110 110 1
    200 200 1
    210 200 1
    200 210 1
    210 210 1
    4
    100 100 1
    200 100 1
    200 103 1
    300 103 1
    
    예상 출력
    Case #1: 7.0000
    Case #2: 8.0000
    Case #3: 26.0000
    Case #4: 8.0711
    Case #5: 51.0000
    
  2. 예제 2

    입력
    4
    1
    500 500 100
    2
    1 1 1
    1000 1000 100
    3
    10 10 1
    10 20 1
    10 30 1
    4
    100 100 2
    120 100 2
    100 120 2
    120 120 2
    
    예상 출력
    Case #1: 100.0000
    Case #2: 100.0000
    Case #3: 6.0000
    Case #4: 12.0000
    
  3. 예제 3

    입력
    2
    5
    100 100 1
    100 120 1
    300 100 1
    300 120 1
    200 110 3
    4
    1 1 1
    1 1000 1
    1000 1 1
    1000 1000 1
    
    예상 출력
    Case #1: 52.4902
    Case #2: 500.5000