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)\)

posted @ 2026-09-17 22:09  CuteNess  阅读(8)  评论(0)    收藏  举报