#P16520. [Bapc2008]Blackjack
[Bapc2008]Blackjack
题目描述
你与庄家进行一种简化的二十一点游戏。牌的花色不影响游戏,只考虑牌面:
2到9的点数等于牌面数字;T、J、Q、K的点数均为 ;- 每张
A可以按 点或 点计算。
一手牌的低点数定义为把所有 A 都按 点计算时的总和。
一手牌的高点数定义为在总和不超过 的前提下,通过把部分 A 按 点计算能够得到的最大总和。
游戏不包含分牌、加倍、保险或“天然二十一点”等额外规则。
牌堆中剩余牌的完整顺序是已知的。每局开始时,你可以下注任意整数金额 ,满足
一局游戏按以下规则进行:
- 你拿第一张牌;
- 庄家拿第一张牌;
- 你拿第二张牌;
- 庄家拿第二张牌;
- 只要你的低点数不超过 ,你可以反复选择:
- Hit:再拿一张牌;
- Stand:停止拿牌。
- 若你的低点数超过 ,你立即爆牌并损失下注金额。
- 若你选择停牌,庄家开始行动。只要庄家的高点数小于 ,庄家就继续拿牌。
- 庄家行动结束后:
- 若庄家的低点数超过 ,你获胜,净利润为 ;
- 否则比较双方高点数:你的点数较大时净利润为 ,相等时为 ,较小时为 。
- 本局使用过的所有牌进入弃牌堆,不会回到牌堆。
若在任何时刻需要继续发牌,但牌堆已经为空,则当前这一局作废,下注金额原样退回,净利润为 。
牌堆中的牌按给定顺序依次发出。你知道全部未来牌序,并可以在每次决策时采取最优策略。牌局结束后继续使用剩余牌进行后续牌局。请计算能够获得的最大总利润。
输入格式
第一行包含一个整数 ,表示测试用例数量。
对于每个测试用例:
- 第一行包含三个整数 :
- ,表示牌堆中剩余牌数;
- ,表示每局允许的最小与最大下注金额。
- 接下来 行共包含恰好 个字符,表示牌堆顺序。合法字符为
2-9、T、J、Q、K、A。
第一行中的第一个牌面字符表示最先发出的牌。除最后一行外,每行包含 个字符。
输出格式
对于每个测试用例,输出一行一个整数,表示采用最优策略能够获得的最大总利润。
样例输入
1
4 1 15
TTA8
样例输出
15