
[GXOI/GZOI2019]宝牌一大堆
这里假设大家都会打)的牌,定义一个权值:有多少种方案凑出这幅牌 × \times ×方案的优秀度。优秀度由两个因素决定:牌型;宝牌。每张宝牌将会让优秀度翻倍,也就是 2 x 2^x 2x倍。牌型带来的特殊优秀度见下方。
发布日期:2021-05-07 01:01:19
浏览次数:27
分类:精选文章
本文共 5233 字,大约阅读时间需要 17 分钟。
题目
题目描述
将一种麻将牌(打麻将你得知道的事情:和
——有哪些牌?
- 普通的:万子、筒子、条子。
- 新鲜的:东南西北;红中、白板、绿发。
——牌的组合?
- 刻子:三张一样的牌。
- 顺子:三张连续的牌。顺子、刻子统称为“面子”。
- 对子:两张一样的牌。在
和牌组合
中也叫做“将”。 - 杠子:四张一样的牌。
——和牌的组合?
- 过小份: 4 × 4\times 4×面子 + 1 × +1\times +1×将。共 14 14 14张。
- 七对: 7 × 7\times 7×对子。共 14 14 14张。对子是不同的。七对的优秀度会额外扩大为原来的 7 7 7倍。
- 国士无双:仅包含数字为一或九的筒、万、条,加上东南西北中白发,每种至少一张。共 14 14 14张。优秀度扩大为原来的 13 13 13倍。
- 杠一次,剩下的组成 3 × 3\times 3×面子 + 1 × +1\times +1×将。共 15 15 15张。
- 杠两次,剩下的组成 2 × 2\times 2×面子 + 1 × +1\times +1×将。共 16 16 16张。
- 杠三次,剩下的组成 1 × 1\times 1×面子 + 1 × +1\times +1×将。共 17 17 17张。
- 杠四次,剩下的组成 1 × 1\times 1×将。共 18 18 18张。
输入输出格式
略。数据范围与约定
对于 100 % 100\% 100%的数据,数据组数 T ≤ 2500 T\le 2500 T≤2500,宝牌的数量不超过 20 20 20张。数据保证合法。思路
龟速的 DP \text{DP} DP
d p [ i ] [ j ] [ k ] [ l ] [ r ] dp[i][j][k][l][r] dp[i][j][k][l][r]表示有 i i i个杠、 j j j个对、 k k k个面子,最大优秀度。倒数第二个选了 l l l个;倒数第一个选了 r r r个。并且都“空闲”着——没有被统计为面子什么的。显然有 i ≤ 4 , j ≤ 7 , k ≤ 4 , l ≤ 4 , r ≤ 4 i\le 4,j\le 7,k\le 4,l\le 4,r\le 4 i≤4,j≤7,k≤4,l≤4,r≤4.
国士无双单独考虑。
然后我就 TLE \text{TLE} TLE飞了……在某谷上只能过 20 pts 20\text{pts} 20pts的数据。
高效的 DP \text{DP} DP
我们有很多优化可以打——
- 七对单独做。发现 j j j之所以要开到 7 7 7,全是
七对
在搞鬼。如果我模仿国士无双
的处理方法,我就可以把 j j j开成 0 / 1 0/1 0/1. - 杠子不需要。发现杠子的贡献无非是 2 C 4 4 = 2 2 C_{4}^{4}=2 2C44=2,而刻子的贡献是 C 4 3 = 4 C_{4}^{3} = 4 C43=4,所以根本不会用杠子的。也就是说,其实只有
七对
、国士无双
、四面一将
需要被考虑。于是我们又降了一维。 - 如果你用 d p [ i , j , k , l , r ] dp[i,j,k,l,r] dp[i,j,k,l,r]去更新别人,那么 d p [ i , j , k , l , r ] = 0 dp[i,j,k,l,r]=0 dp[i,j,k,l,r]=0时就不用更新了。
这就是全部优化了。但这些就足以助你通过此题!
代码
#include#include #include #include
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月16日 17时08分31秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
中国剩余定理证明过程
2021-05-09
kafka告警简单方案
2021-05-09
java接口的应用举例
2021-05-09
java接口中多继承的问题
2021-05-09
java中Object.equals()简单用法
2021-05-09
一个小例子对多态简单的理解
2021-05-09
poj 2187 Beauty Contest(凸包求解多节点的之间的最大距离)
2021-05-09
poj 2492A Bug's Life(并查集)
2021-05-09
ZZUOJ 1199 大小关系(拓扑排序,两种方法_判断入度和dfs回路判断)
2021-05-09
java中自动装箱的问题
2021-05-09
zyUpload+struct2完成文件上传
2021-05-09
knockout+echarts实现图表展示
2021-05-09
js冲刺一下
2021-05-09
程序员的开发文档
2021-05-09
mybatis generator修改默认生成的sql模板
2021-05-09