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

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

염소 밧줄

시간 제한8초메모리 제한128 MB

요약
n개의 점에 반지름을 배정하되 모든 쌍에서 r_i + r_j가 두 점 사이 거리 이하가 되도록 하고, 반지름 합의 최댓값을 구한다.
난이도

어려움10점 중 8점

유형
그래프, 최소 신장 트리, 그리디, 수학
정답자
아직 제출이 없습니다

문제

한 농부에게 염소가 nn마리 있고, 같은 들판에 고정된 말뚝이 nn개 있다. 농부는 각 염소를 서로 다른 말뚝에 밧줄로 묶어, 모든 염소가 되도록 넓게 돌아다닐 수 있게 하려고 한다. 길이가 rr인 밧줄로 말뚝에 묶인 염소는 그 말뚝을 중심으로 하는 반지름 rr인 원 안이라면 어디서든 풀을 뜯을 수 있다.

염소 밧줄은 쉽게 엉키므로, 어떤 염소도 다른 염소의 방목 구역 안으로 들어갈 수 있어서는 안 된다. 즉 어떤 두 방목 원도 서로 겹쳐서는 안 된다(한 점에서 접하는 것은 허용된다). 이 규칙을 지키도록 밧줄 길이를 정할 때, 농부가 사용할 수 있는 밧줄 길이 총합의 최댓값은 얼마인가?

수식으로 나타내면, 서로 다른 모든 말뚝 쌍 i≠ji \ne j에 대해 ri+rj≤d(i,j)r_i + r_j \le d(i, j)가 성립하도록 각 말뚝 ii에 반지름 ri≥0r_i \ge 0을 배정한다. 여기서 d(i,j)d(i, j)는 두 말뚝 사이의 거리이다. 이때 ∑iri\sum_i r_i를 최대화하라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 말뚝의 개수를 나타내는 정수 nn (2≤n≤502 \le n \le 50)으로 시작한다. 이어지는 nn개의 줄에는 각각 말뚝의 좌표를 나타내는 두 정수 xx와 yy (0≤x≤10000 \le x \le 1000, 0≤y≤10000 \le y \le 1000)가 미터 단위로 주어진다. 두 말뚝이 같은 위치에 있는 경우는 없다. 들판은 충분히 넓어 염소가 그 경계에 닿는 일은 없다. 입력은 00 하나만 있는 줄로 끝난다.

출력

각 테스트 케이스마다 농부가 사용할 수 있는 밧줄 길이 총합의 최댓값을 미터 단위로, 소수점 아래 정확히 둘째 자리까지 반올림하여 한 줄에 출력한다. 불필요한 공백을 출력하지 말고, 답과 답 사이에 빈 줄을 넣지 마라.

예제6

  1. 예제 1

    입력
    2
    250 250
    250 750
    3
    250 250
    500 500
    250 750
    0
    
    예상 출력
    500.00
    603.55
    
  2. 예제 2

    입력
    2
    0 0
    1000 1000
    0
    
    예상 출력
    1414.21
    
  3. 예제 3

    입력
    4
    0 0
    0 10
    10 0
    10 10
    0
    
    예상 출력
    20.00
    
  4. 예제 4

    입력
    4
    0 0
    10 0
    20 0
    30 0
    0
    
    예상 출력
    20.00
    
  5. 예제 5

    입력
    5
    500 900
    880 624
    735 176
    265 176
    120 624
    0
    
    예상 출력
    1175.54
    
  6. 예제 6

    입력
    5
    0 0
    1000 0
    0 1000
    1000 1000
    500 500
    0
    
    예상 출력
    2207.11