만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

가장자리가 바삭한 쿠키

시간 제한15초메모리 제한1024 MB

요약
직사각형 쿠키 N개를 각각 그대로 두거나 중심을 지나는 직선으로 넓이가 같은 두 조각으로 자릅니다. 둘레의 합이 P를 넘지 않는 최대값을 구합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 기하, 수학
정답자
아직 제출이 없습니다

문제

제빵사 마이야르 씨가 쿠키 반죽을 밀어 펴서 잘라 NN개의 쿠키를 만들었다. 모든 쿠키는 직사각형이다. 막 오븐에 넣으려다가, 바삭하게 캐러멜화된 쿠키 가장자리가 특히 맛있다는 사실을 떠올렸다. 구체적으로, 그는 모든 쿠키의 둘레 합이 PP mm(밀리미터)에 최대한 가깝되 PP를 넘지 않을 때 가장 만족스러울 것이라고 생각한다. (가장자리가 너무 많으면 탈 수도 있다!)

각 쿠키마다 그대로 둘지, 직선으로 한 번 잘라 넓이가 같은 두 조각으로 나눌지 정할 수 있다. (이 절단선은 반드시 쿠키의 중심을 지난다.) 이렇게 만든 두 쿠키는 다시 자를 수 없다.

마이야르 씨가 최적으로 결정한다면, PP를 넘지 않으면서 PP에 가장 가깝게 만들 수 있는 값은 얼마인가?

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다. 각 테스트 케이스의 첫 줄에는 쿠키의 개수 NN과 목표 둘레 합 PP(mm)가 정수로 주어진다. 이어서 NN개의 줄이 주어지며, ii번째 줄에는 ii번째 쿠키의 너비 WiW_i와 높이 HiH_i(둘 다 mm 단위)가 정수로 주어진다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄을 출력한다. 여기서 xx는 테스트 케이스 번호(1부터 시작)이고, yy는 절단을 마친 뒤 모든 쿠키의 둘레 합 중 PP를 넘지 않는 최댓값(mm)이다. 절대 오차 또는 상대 오차가 10−610^{-6} 이내이면 정답으로 인정한다.

제한

1≤T≤1001 \le T \le 100.

1≤N≤1001 \le N \le 100.

모든 ii에 대해 1≤Wi≤2501 \le W_i \le 250.

모든 ii에 대해 1≤Hi≤2501 \le H_i \le 250.

P≥2×∑i(Wi+Hi)P \ge 2 \times \sum_i (W_i + H_i). (PP는 어떤 쿠키도 자르기 전의 모든 쿠키 둘레 합 이상이다.)

P≤108P \le 10^8.

힌트

테스트 셋 1에서는 마지막 예제 케이스가 나오지 않는다는 점에 유의하라.

예제 케이스 #1에는 한 변의 길이가 1인 정사각형 쿠키 하나만 있다. 한쪽 모서리에서 대각선 반대편 모서리까지 자르면, 변의 길이가 1, 1, 2\sqrt{2}인 직각삼각형 두 개가 생긴다. 이때 둘레 합은 4+224 + 2\sqrt{2}이고, 이는 P=7P = 7보다 작지만 더 가깝게 만들 수는 없다.

예제 케이스 #2에서는 첫 번째 쿠키를 긴 축을 따라 잘라 25 x 120 직사각형 두 개를 만들고, 두 번째 쿠키는 그대로 둔다. 그러면 전체 둘레는 580+340=920580 + 340 = 920이 되어 정확히 PP와 같다.

예제 케이스 #3에서는 쿠키를 잘라 변의 길이가 2, 4, 5, 5인 사다리꼴 두 개를 만든다. 그러면 새 둘레 합은 32가 되어 정확히 PP와 같다.

예제 케이스 #4에서는 처음 둘레 합이 이미 정확히 PP이므로, 마이야르 씨는 자르지 않아야 한다.

예제1

  1. 예제 1

    입력
    4
    1 7
    1 1
    2 920
    50 120
    50 120
    1 32
    7 4
    3 240
    10 20
    20 30
    30 10
    
    예상 출력
    Case #1: 6.828427
    Case #2: 920.000000
    Case #3: 32.000000
    Case #4: 240.000000