1 条题解
-
0
1. 题意整理
- 有 种牌,大小 ,每种 张,总共 张。
- 初始手牌 张(每种牌最多 张)。
- 剩下的 张牌随机排列 。
- 定义 = 初始 张 + 的前 张牌。
- 权值 = 最小的 使得 有一个 大小为 14 的子集 是胡的。
- 胡牌条件(14 张牌):
- 一对(对子) + 四个面子(刻子或顺子)
- 七个互不相同的对子(七对子)
- 求 的期望,模 。
2. 思路分析
2.1 转化为计数问题
设 是剩余牌的数量。
对于每个 (),我们想知道有多少种排列 满足:
- 有胡牌子集
- 没有胡牌子集
那么 的排列数就是:
$$\text{count}(i) = \{P \mid S_i \text{ 可胡}, S_{i-1} \text{ 不可胡\} } $$特别地,若 (初始手牌)就可胡,那么 ?不对, 从 开始,因为 只有 13 张牌,不可能胡(胡要 14 张)。所以 最小是 。
实际上 不可能胡,所以 是第一个 使得 可胡。
2.2 期望公式
设 总排列数。
期望:
$$E = \frac{1}{N} \sum_{k=1}^m k \cdot \text{count}(k) $$其中 。
更方便的计数方式:
其中 ,且 。
于是:
化简:
$$E = \frac{1}{N} \left( \sum_{k=1}^m k A_k - \sum_{k=0}^{m-1} (k+1) A_k \right) $$$$= \frac{1}{N} \left( m A_m - \sum_{k=0}^{m-1} A_k \right) $$因为 (最后一定可胡),所以:
其中 。
2.3 问题转化为求
= 有多少种排列 使得 可胡。
等价于:从 张牌中选出初始 张 + 的前 张,这个集合包含一个胡牌的 14 张子集。
3. 胡牌的判定
两种胡牌方式:
3.1 七对子形式
需要 7 个不同的对子(14 张牌),每个对子是相同大小的两张牌,且 7 个对子的大小互不相同。
条件:有至少 7 种牌,每种牌的张数 。
3.2 一般形式(一对 + 四面子)
面子可以是:
- 刻子
- 顺子
对子 与面子不重叠。
4. 对 的计数方法
4.1 牌的张数表示
设初始 13 张牌中,大小为 的张数为 ()。
在 的前 张中,大小为 的张数为 ()。
那么 中大小为 的张数 = 。
4.2 七对子情况
七对子成立条件:。
4.3 一般型情况
这是麻将标准型,可以用 DP 判断:设 表示考虑完前 种牌,已有 个面子,上一种牌剩下 张,上上种牌剩下 张(用于顺子),且已经选好对子与否的状态。
但这里我们不是判断固定手牌,而是计数有多少种 使得存在一个 14 张的子集可胡。
4.4 简化:提前胡牌的条件
可胡意味着:存在一个大小为 14 的子集 可胡。
因为 的牌数 = ,要取出 14 张胡牌,那么 。
5. 另一种思路:容斥 + 提前胡牌的最早巡目
我们考虑最早的胡牌时刻 ,意味着加入第 张牌后才第一次可胡。
那么 不可胡,但 可胡。
设新加入的牌是 (大小和种类确定),那么 可胡必须用到 (否则 就可胡了)。
5.1 用到新牌 的胡牌
有两种情况:
- 七对子型:新牌 和已有的另一张同大小组成对子,并且其他 6 对不涉及 大小。
- 一般型:新牌 作为对子的一部分,或者作为面子的组成部分。
5.2 一般型的细分
设新牌大小为 , 中 的张数为 ( 是前 张中抽到的该大小的数量)。
- 如果新牌作为对子:那么 (之前至少有一张同大小),这样新牌和它组成对子。
- 如果新牌作为面子的一部分:
- 刻子:需要 (之前至少有两张同大小)
- 顺子:需要 在 中各有至少 1 张(对新牌 是中间那张),或者 (新牌是最小那张,需要后两种在 中各至少 1 张),或者 (新牌是最大那张,需要前两种在 中各至少 1 张)。
6. 概率计算框架
我们可以枚举第 张牌是什么(大小 ),以及前 张牌的分布情况,计算满足“ 不可胡但加入 后可胡”的排列数。
设 = 排列 的数量,使得 且第 张牌大小为 。
那么:
$$E = \frac{1}{N} \sum_{i=1}^m i \cdot \text{count}(i) $$
6.1 计算
固定 ,设 初始张数。
前 张中 大小的张数 满足 。
前 张的分布 满足 ,且 。
我们要计数这些分布使得 不可胡,但加入一张 后()可胡。
6.2 七对子情况
加入 后七对子成立:之前 则 大小已有至少 1 张,新牌组成第 7 个对子。需要其他 6 种大小 满足 。
7. 实现方法(大纲)
由于 ,直接枚举所有分布不可行,但可以用 DP 计数:
- 预处理初始手牌 。
- 对于每个 从 到 ,对于每个 ,计算 :
- 用 DP 状态 表示考虑前 种牌,已经用了 张牌, 表示哪些大小已经满足“有至少 2 张”等条件。
- 同时要维护“是否已经可胡”的信息,但这里我们要求 不可胡,所以 DP 要能区分可胡与不可胡的状态。
实际上,由于状态复杂,竞赛中常用自动机方法:将胡牌条件建成一个有限状态自动机,然后 DP 记录状态。
8. 最终公式(理论)
我们推导出的简洁公式:
其中 是前 张牌+初始牌可胡的排列数。
计算 :
$$A_k = \sum_{\substack{0 \le t_j \le 4-c_j \\ \sum t_j = k}} \frac{k!}{\prod t_j!} \cdot (m-k)! \cdot [S_k \text{ 可胡}] $$这里 是前 张牌按大小分布的排列数, 是剩余牌的排列数。
因此:
$$A_k = (m-k)! \cdot k! \cdot \sum_{\substack{\mathbf{t} \\ \sum t_j = k}} \frac{[S_k \text{ 可胡}]}{\prod t_j!} $$
9. 模运算
模 ,需要预处理阶乘和逆元。
设:
$$F(k) = \sum_{\substack{\mathbf{t} \\ \sum t_j = k}} \frac{[S_k \text{ 可胡}]}{\prod t_j!} $$则:
$$E = m - \frac{1}{m!} \sum_{k=0}^{m-1} (m-k)! \cdot k! \cdot F(k) $$
10. 总结
这道题的难点在于:
- 麻将胡牌规则的组合表达。
- 最早胡牌巡目的概率转化。
- 大规模状态计数需要 DP 优化。
最终我们得到了一个用 表示的公式,而 可以通过动态规划按牌的大小依次计算,同时检查胡牌可能性。
- 1
信息
- ID
- 4499
- 时间
- 2500ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 4
- 已通过
- 1
- 上传者