비디오 포커
시간 제한1초메모리 제한128 MB
포커 상금표와 다섯 장의 카드가 주어질 때, 32가지 교체 방법 중 기대값을 최대화하는 선택을 찾아 정확한 분수로 출력합니다.
문제
비디오 포커는 5장 드로 방식을 바탕으로 한 슬롯머신형 포커이다. 플레이어는 표준 52장 덱에서 무작위로 뽑은 5장의 패를 받는다. 그런 다음 이 중 임의의 장수(0장부터 5장까지)를 버리고, 버린 카드마다 덱에 남은 47장 중에서 무작위로 뽑은 새 카드로 교체할 수 있다. 최종 5장의 패는 아래의 고정된 배당표에 따라 평가되어 보상을 받는다. 흔한 배당표는 다음과 같다.
배당표의 어느 행과도 일치하지 않는 패(단순 하이 카드)의 보상은 이다. 배당표가 주어졌을 때, 주어진 시작 패에 대해 어떤 카드를 버릴지 정하여 기대 보상을 최대로 만든다. 이 최대 기대 보상을 구하는 것이 목표이다.
일반적인 포커 족보 순위를 따른다. 카드는 두 글자 토큰 Xs로 표기하며, X는 숫자(2-9, T, J, Q, K, A), s는 무늬(c, d, h, s)이다. 에이스는 가장 높은 카드이지만, 스트레이트 A 2 3 4 5에서는 가장 낮은 카드로도 쓸 수 있다. 로열 플러시는 한 무늬의 T J Q K A 스트레이트 플러시이다.
입력
첫 줄에는 양의 정수 하나, 즉 테스트 케이스의 수(최대 )가 주어진다. 각 테스트 케이스는 다음과 같이 구성된다.
- 아홉 개의 정수 ()가 한 줄에 주어진다. 이는 원 페어, 투 페어, 트리플, 스트레이트, 플러시, 풀 하우스, 포 카드, 스트레이트 플러시, 로열 플러시에 대한 배당을 오름차순으로 나열한 것이다.
- 정수 () 하나가 한 줄에 주어진다. 이는 시작 패의 개수이다.
- 이어서 개의 줄이 주어지며, 각 줄은 공백으로 구분된 다섯 개의 카드 토큰으로 하나의 시작 패를 나타낸다.
출력
각 시작 패에 대해, 최대 기대 보상을 기약 분수 p/q 형태로 한 줄에 하나씩 출력한다. 여기서 이고 이며, 정수 값 는 v/1로 출력한다.
기대 보상은 항상 유리수이다. 남길 카드의 집합이 정해지면 보상은 동일한 확률을 갖는 모든 뽑기에 대한 보상의 합을 그 뽑기의 수로 나눈 값이므로, 모든 버리기 선택에 대한 최댓값은 정확한 값을 가지며 이를 분수 p/q로 나타낸다.