만드는 중입니다

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

조작된 룰렛

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

요약
조작된 룰렛에서 최소 베팅 번호가 당첨될 때 예산 안에서 정수 베팅을 배치해 기대 수익을 최대화합니다.
난이도

보통10점 중 6점

유형
확률, 수학, 그리디
정답자
아직 제출이 없습니다

문제

룰렛은 0부터 36까지의 번호 가운데 하나 이상에 참가자가 돈을 거는 카지노 게임이다. 판이 한쪽으로 돌고 구슬은 반대쪽으로 돌다가, 구슬은 결국 0부터 36 사이의 한 번호에 떨어진다. 00 칸이 있는 룰렛도 있지만 이 룰렛에는 없다. 구슬이 떨어진 번호에 돈을 건 참가자는 건 돈의 36배를 받는다. 그 판돈의 순이익은 건 돈의 35배다. 다른 번호에 건 돈은 모두 잃는다.

당신은 밤새 돈을 잃었다. 게임을 더 지켜보다가 카지노에 유리한 규칙성을 찾아냈다. 구슬은 언제나 걸린 돈의 합이 가장 작은 번호에 떨어진다. 합이 가장 작은 번호가 여럿이면 그중 하나에 균등한 확률로 떨어진다.

당신은 다른 참가자가 모두 돈을 건 뒤에 자신의 돈을 건다. 남은 예산은 BB이고 건 돈의 합은 BB를 넘을 수 없다. 서로 다른 번호 0개 이상에 걸 수 있고, 각 번호에 거는 금액은 양의 정수라면 무엇이든 되며 번호마다 달라도 된다. 최적으로 걸었을 때 순이익의 기댓값을 구하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어지고, 각 테스트 케이스는 두 줄이다. 첫 줄에는 남은 예산 BB와 다른 참가자가 돈을 건 번호의 개수 NN이 공백을 사이에 두고 주어진다. 둘째 줄에는 그 서로 다른 NN개 번호에 걸린 돈의 합 X1,X2,…,XNX_1, X_2, \dots, X_N이 공백을 사이에 두고 주어진다.

제한

  • 1≤T≤1001 \le T \le 100
  • 1≤N≤371 \le N \le 37
  • 1≤B,Xi≤10001 \le B, X_i \le 1000

출력

각 테스트 케이스마다 한 줄에 "Case #x: "를 출력한 다음, 최적으로 걸었을 때 순이익의 기댓값을 출력한다. xx는 1부터 시작하는 테스트 케이스 번호다. 기댓값은 소수점 아래 여섯째 자리까지 반올림해서 쓰고, 값이 정수라도 0으로 채워 소수점 아래를 항상 여섯 자리로 출력한다.

힌트

첫 번째 예제 입력의 두 번째 테스트 케이스에서는 아무도 걸지 않은 34개 번호에 1씩 걸면 된다. 비용은 34이고 어느 번호가 나와도 36을 받으므로 순이익은 36−34=236 - 34 = 2다.

세 번째 테스트 케이스에서는 아무도 걸지 않은 33개 번호에 1씩 건다. 걸린 돈의 합이 1인 번호는 모두 35개이고 그중 33개가 당신이 건 번호이므로, 3335\frac{33}{35}의 확률로 36을 받는다. 순이익의 기댓값은 3335×36−33=3335\frac{33}{35} \times 36 - 33 = \frac{33}{35}이고, 소수점 아래 여섯째 자리까지 반올림하면 0.942857이다.

예제3

  1. 예제 1

    입력
    3
    100 1
    10
    34 3
    5 6 7
    34 4
    1 1 10 10
    
    예상 출력
    Case #1: 0.000000
    Case #2: 2.000000
    Case #3: 0.942857
    
  2. 예제 2

    입력
    1
    1 37
    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
    
    예상 출력
    Case #1: 0.000000
    
  3. 예제 3

    입력
    1
    1000 3
    1000 1000 1000
    
    예상 출력
    Case #1: 58.000000