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

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

상자는 얼마나 커야 할까?

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

요약
최대 8개의 원을 모두 상자 바닥에 닿도록 배치해 상자의 전체 너비를 최소로 만든다.
난이도

보통10점 중 7점

유형
백트래킹, 기하, 완전 탐색
정답자
아직 제출이 없습니다

문제

이안은 캘리포니아로 가려고 짐을 싸야 하는데, 그중에는 그가 모은 원들도 있습니다. 주어진 원들의 집합에 대해, 그 원들을 모두 담을 수 있는 가장 작은 직사각형 상자를 찾는 프로그램을 작성하세요.

모든 원은 상자의 바닥에 닿아야 합니다. 아래 그림은 어떤 원들의 집합에 대한 하나의 올바른 배치를 보여 줍니다(그 원들에 대한 최적의 배치가 아닐 수도 있습니다). 이상적인 배치에서는 각 원이 적어도 다른 한 원과 닿아 있게 됩니다.

상자 바닥을 따라 놓인 원들의 올바른 배치 예시

입력

첫 번째 줄에는 하나의 양의 정수 nn (n≤100n \le 100)이 주어지며, 이는 뒤따르는 자료 줄의 개수입니다. 다음 nn개의 줄은 각각 하나의 배치 문제를 나타냅니다. 각 줄은 그 줄에 있는 원의 개수인 양의 정수 mm (m≤8m \le 8)으로 시작하고, 그 뒤에 mm개의 원의 반지름이 이어집니다. 반지름은 정수가 아닐 수도 있습니다.

출력

각 자료 줄마다(즉 첫 번째 줄을 제외한 모든 줄에 대해), 그 줄의 원들을 담을 수 있는 가장 작은 상자의 너비를 출력하세요. 각 답은 한 줄에 하나씩, 소수점 아래 정확히 세 자리까지 출력합니다. 값이 1보다 작은 경우가 아니라면 앞에 0을 붙이지 마세요(예: 0.543).

예제2

  1. 예제 1

    입력
    3
    3 2.0 1.0 2.0
    4 2.0 2.0 2.0 2.0
    3 2.0 1.0 4.0
    
    예상 출력
    9.657
    16.000
    12.657
    
  2. 예제 2

    입력
    1
    1 3.5
    
    예상 출력
    7.000