zoukankan      html  css  js  c++  java
  • LG P5279 [ZJOI2019]麻将

    Description

    九条可怜是一个热爱打麻将的女孩子。因此她出了一道和麻将相关的题目,希望这题不会让你对麻将的热爱消失殆尽。

    今天,可怜想要打麻将,但是她的朋友们都去下自走棋了,因此可怜只能自己一个人打。可怜找了一套特殊的麻将,它有$n(nge 5)$种不同的牌,大小分别为 $1$到 $n$,每种牌都有 $4$ 张。

    定义面子为三张大小相同或者大小相邻的麻将牌,即大小形如$i,i,i(1 le i le n)$或者$i,i+1,i+2(1 le i le n-2)$。定义对子为两张大小相同的麻将牌,即大小形如$i,i(1 le i le n)$。

    定义一个麻将牌集合 $S$ 是胡的当且仅当它的大小为 $14$ 且满足下面两个条件中的至少一个:

    • $S$ 可以被划分成五个集合 $S_1$ 至 $S_5$ 。其中 $S_1$ 为对子,$S_2$ 至 $S_5$ 为面子。
    • $S$ 可以被划分成七个集合 $S_1$至 $S_7$ ,它们都是对子,且对应的大小两两不同。

    举例来说,下列集合都是胡的(这儿只标记了大小):

    • {1,1,1,1,2,3,4,5,6,7,8,9,9,9}
    • {1,1,2,2,4,4,5,5,6,6,7,7,8,8}
    • {1,1,2,2,3,3,4,4,5,5,6,6,7,7}

    而下列集合都不是胡的:

    • {1,1,1,2,3,4,5,6,7,8,9,9,9}
    • {1,1,1,1,4,4,5,5,6,6,7,7,8,8}
    • {1,1,1,2,3,4,5,6,7,8,9,9,9,11}

    可怜先摸出了 $13$张牌,并把剩下的$4n-13$张牌随机打乱。打乱是等概率随机的,即所有$(4n-13)!$种排列都等概率出现。

    对于一个排列$P$,可怜定义 $S_i$ 为可怜事先摸出的 $13$ 张牌加上 $P$中的前 $i$ 张牌构成的集合,定义 $P$ 的权值为最小的 $i$ 满足 $S_i$ 存在一个子集是胡的。如果你对麻将比较熟悉,不难发现 $P$ 的权值就是理论上的最早胡牌巡目数。注意到 $nge 5$的时候,$S_{4n-13}$总是存在胡的子集的,因此 $P$ 的权值是良定义的。

    现在可怜想要训练自己的牌效,因此她希望你能先计算出 $P$ 的权值的期望是多少。

    Solution

    记$f[i][j][k][0/1]$为当前选到第$i$种麻将,有$j$个顺子差最后一张,有$k$个顺子差最后两张,$0/1$代表是否有对子时的面子数量

    枚举新来了几张$i+1$的牌,求出加入这些牌之后的状态,作为内层DP

    记$dp[i][S]$为选$i$张牌,状态为$S$的方案数,作为外层DP

    DP套DP求解,最终答案为

    $sum_{i=13}^{4n} sum_{S} frac{dp[i][S](i-13)!(4n-i)!}{(4n-13)!}$

    [ZJOI2019]麻将
  • 相关阅读:
    How to render client report definition files (.rdlc) directly to the Response stream without preview(转)
    dedecms 5.7后台拿WEBSHELL
    sql注入语句大全
    常用putty命令汇总
    sql学习笔记(要够长)
    Ubuntu自动运行脚本
    backtrack安装优化过程
    原创【bt5非官网版本】 在虚拟机下无法连接网络的解决方案
    第五章——循环结构5.1
    Kali Linux 1.0
  • 原文地址:https://www.cnblogs.com/JDFZ-ZZ/p/13396431.html
Copyright © 2011-2022 走看看