ARAM (큰 데이터)

리롤 재화를 써서 무작위 챔피언을 교체할 시점을 정해 장기 승률을 최대화합니다.

어려움8동적 계획법확률이분 탐색정렬아직 제출이 없습니다시간 제한120초메모리 제한512 MB

문제

League of Legends™에는 ARAM이라는 게임 모드가 있다. All Random, All Mid의 약자다. 이 문제는 그 규칙을 단순하게 바꾼 것이므로 게임을 해 본 적이 없어도 풀 수 있다.

ARAM 한 판을 시작할 때마다 NN명의 챔피언 중 한 명이 균등한 확률로 배정된다. 챔피언마다 이길 확률이 달라서 운이 나쁘면 다른 챔피언을 받고 싶어진다. 게임에는 리롤 기능이 있다.

리롤 권한은 돈처럼 쓴다. 첫 판을 시작하기 전에 RR RD(리롤 달러)를 가지고 시작한다. RD가 11 이상일 때만 리롤할 수 있고 리롤 한 번에 11 RD를 쓴다. 한 판이 끝나면 1/G1/G RD를 얻지만 (GG는 정수) RD는 RR을 넘지 못한다. RR RD를 가진 채로 한 판을 더 하면 그 판이 끝나도 RD는 그대로 RR이다.

RD가 11 이상일 때 리롤을 고르면 11 RD를 쓰고 NN명 중 한 명을 균등한 확률로 다시 배정받는다. 처음과 같은 챔피언이 나올 수도 있다. 리롤로 받은 챔피언도 마음에 들지 않고 RD가 아직 11 이상 남아 있으면 다시 리롤할 수 있다. RD가 11 이상 남아 있는 동안은 계속 리롤할 수 있다.

예를 들어 R=2R = 2, G=2G = 2이고 첫 판에서 리롤을 한 번 썼다면 첫 판이 끝난 뒤 RD는 1.51.5다. 다음 판에서 리롤을 쓰지 않으면 그 판이 끝난 뒤 RD는 2.02.0이다. 그다음 판에서도 리롤을 쓰지 않으면 RD는 여전히 2.02.0이다. R=2R = 2를 넘을 수 없기 때문이다. 그다음 판에서 리롤을 두 번 쓰면 그 판이 끝난 뒤 RD는 0.50.5다.

챔피언 목록과 각 챔피언으로 게임했을 때 이길 확률이 주어진다. 1010010^{100}판을 하면서 전략을 최적으로 고를 때의 기대 승률을 구하라. 판 수 1010010^{100}은 충분히 크므로, 답은 한 판당 기대 승률의 장기 평균을 최대화한 값과 소수점 아래 아홉째 자리까지 일치한다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다. 각 테스트 케이스의 첫 줄에는 세 정수 NN, RR, GG가 공백으로 구분되어 주어진다. 다음 줄에는 실수 P1,P2,,PNP_1, P_2, \dots, P_N이 공백으로 구분되어 주어진다. PiP_iii번째 챔피언으로 게임했을 때 이길 확률이다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx11부터 시작하는 테스트 케이스 번호이고, yy1010010^{100}판을 했을 때의 기대 승률이다. yy는 반올림해서 소수점 아래 아홉 자리를 정확히 채워 출력한다.

제한

  • 1T1001 \le T \le 100
  • 1N10001 \le N \le 1000
  • 1R201 \le R \le 20
  • 1G201 \le G \le 20
  • 0.0Pi1.00.0 \le P_i \le 1.0
  • PiP_i는 한 자리 숫자, 소수점, 네 자리 숫자 순서로 주어진다.

힌트

League of Legends는 Riot Games의 상표다. Riot Games는 이 문제를 보증하지 않고 이 문제와 아무 관련이 없다.