만드는 중입니다

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

ARAM (작은 입력)

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

요약
회복되는 리롤 재화로 챔피언을 다시 뽑아 장기 승률을 최대화하는 최적 전략을 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 확률, 그리디
정답자
아직 제출이 없습니다

문제

League of Legends에는 "ARAM"(All Random, All Mid)이라는 모드가 있다. 이 문제는 그 규칙을 본떴고, 게임을 해 본 적이 없어도 이해할 수 있다.

한 판을 시작할 때마다 NN명의 챔피언 중 한 명이 균등한 확률로 배정된다. 챔피언마다 이길 확률이 다르므로 운이 나쁘면 다른 챔피언을 받고 싶어진다. 이럴 때 쓰라고 다시 뽑기 기능이 있다.

다시 뽑기는 일종의 화폐처럼 동작한다. 첫 판을 시작하기 전에 RR RD(reroll dollar)를 들고 시작한다. RD가 1 이상일 때만 다시 뽑을 수 있고, 한 번 뽑을 때마다 1 RD를 쓴다. 한 판이 끝날 때마다 1/G1/G RD를 얻는다. 여기서 GG는 정수다. 다만 잔액은 절대 RR을 넘지 않는다. RR RD를 들고 한 판을 하면 그 판이 끝난 뒤에도 잔액은 여전히 RR RD다.

RD가 1 이상일 때 다시 뽑기를 고르면 1 RD를 쓰고 NN명 중 한 명을 다시 균등한 확률로 배정받는다. 방금 들고 있던 챔피언이 또 나오기도 한다. 새로 받은 챔피언도 마음에 들지 않고 RD가 아직 1 이상 남아 있으면 또 뽑는다. RD가 1 이상인 동안에는 몇 번이든 다시 뽑을 수 있다.

예를 들어 R=2R = 2, G=2G = 2라고 하자. 첫 판에서 다시 뽑기를 한 번 썼다면 그 판이 끝난 뒤 잔액은 1.5 RD다. 다음 판을 다시 뽑기 없이 끝내면 잔액은 2.0 RD가 된다. 그다음 판도 다시 뽑기 없이 끝내면 잔액은 그대로 2.0 RD인데, 잔액이 R=2R = 2를 넘지 않기 때문이다. 그다음 판에서 다시 뽑기를 두 번 쓰면 그 판이 끝난 뒤 잔액은 0.5 RD다.

챔피언 목록과 각 챔피언으로 한 판을 했을 때 이길 확률이 주어진다. 1010010^{100}판을 하면서 전략을 최적으로 세울 때 이길 것으로 기대되는 판의 비율을 구하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스의 첫 줄에는 공백으로 구분된 정수 NN, RR, GG가 주어진다. 다음 줄에는 공백으로 구분된 실수 P1,P2,…,PNP_1, P_2, \ldots, P_N이 주어진다. PiP_i는 ii번 챔피언으로 한 판을 했을 때 이길 확률이다.

1≤T≤1001 \le T \le 100, 1≤N≤10001 \le N \le 1000, 1≤R≤41 \le R \le 4, 1≤G≤41 \le G \le 4이다. 각 PiP_i는 소수점 아래 넷째 자리까지 적혀 있고 0≤Pi≤10 \le P_i \le 1을 만족한다.

출력

각 테스트 케이스마다 "Case #x: y" 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 최적 전략으로 1010010^{100}판을 했을 때 이기는 판의 비율이다. yy는 소수점 아래 아홉째 자리까지 반올림해 아홉 자리를 모두 출력한다.

참고

League of Legends는 Riot Games의 상표다. Riot Games는 이 문제와 무관하다.

예제2

  1. 예제 1

    입력
    3
    2 1 1
    1.0000 0.0000
    3 1 1
    1.0000 0.0000 0.5000
    6 2 3
    0.9000 0.6000 0.5000 0.1000 0.2000 0.8000
    
    예상 출력
    Case #1: 0.750000000
    Case #2: 0.666666667
    Case #3: 0.618728522
    
  2. 예제 2

    입력
    6
    1 1 1
    0.5000
    1 4 4
    0.0000
    1 2 3
    1.0000
    4 4 4
    0.0000 0.0000 0.0000 0.0000
    3 1 1
    1.0000 1.0000 1.0000
    5 2 2
    0.2500 0.2500 0.2500 0.2500 0.2500
    
    예상 출력
    Case #1: 0.500000000
    Case #2: 0.000000000
    Case #3: 1.000000000
    Case #4: 0.000000000
    Case #5: 1.000000000
    Case #6: 0.250000000