qoj 7681 前缀麻将
qoj7681
考虑给定一个局面如何 \(\mathcal O(n)\) 检验是否合法。
考虑从小到大 DP,设状态 \(f(x,y,z)\),\(x[0,2]\) 表示以 \(i\) 结尾的顺子个数,\(y[0,2]\) 表示以 \(i\) 在中间的顺子个数,\(z[0,1]\) 表示是否选了和牌。剩下的 \(3\) 的倍数用刻子。共 \(18\) 个状态。
直接写成 DDP,矩阵是二进制与或矩阵,bitset 即可做到 \(\mathcal O(18^2)\) 每次乘法。直接维护即可做到 \(\mathcal O(18^2n\log n)\)。
本文来自博客园,作者:CuteNess,转载请注明原文链接:https://www.cnblogs.com/CuteNess/p/23017980

浙公网安备 33010602011771号