Videopoker 的问题的极大

Problem Description
Videopoker is the slot machine variant of the currently immensely popular game of poker. It is a variant on draw poker. In this game the player gets a hand consisting of five cards randomly drawn from a standard 52-card deck. From this hand, the player may discard any number of cards (between 0 and 5, inclusive), and change them for new cards randomly drawn from the remainder of the deck. After that, the hand is evaluated and the player is rewarded according to a payout structure. A common payout structure is as follows:

Once you know the payout structure, you can determine for a given hand which cards you must change to maximize your expected reward. We'd like to know this expected reward, given a hand.

Input
On the first line one positive number: the number of testcases, at most 100. After that per testcase:

  • One line with nine integers xi (0 ≤ xi ≤ 1000$) describing the payout structure. The numbers are in increasing order and describe the payout for one pair, two pair, etc, until the royal flush.
  • One line with one integer n (1 ≤ n ≤ 10): the number of starting hands to follow.
  • n lines, each describing a starting hand. A hand consists of five space separated tokens of the form Xs, with X being the rank (2'...9', T',J', Q',K' or A') and s being the suit (c', d',h' or `s').

Output
Per testcase:

  • One line for each starting hand with a floating point number that is the maximal expected reward for that hand. These numbers must have an absolute or relative error less than 10-6.

Sample Input
1
1 2 3 4 5 10 25 100 250
5
Ah Ac Ad As 2s
Ks Qs Js Ts 2h
Ks Qs 2d 2h 3s
2d 4h 5d 3c 9c
2h 3h 6d 8h Tc

Sample Output
25.000000
8.9574468
1.5467160
0.9361702
0.6608135

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问