[ARC160D] Mahjong 题解
大家都太卷了,跟不上要 AFO 了。
题意
找到可以通过以下两种操作,使得长度为 \(N\)、元素之和为 \(M\) 的数列 \(A\) 全为 \(0\) 的 \(A\) 的个数,再取模 \(998244353\)。
- 在 \(A\) 中选一个元素,将其减去 \(K\)。
- 在 \(A\) 中选取长度为 \(K\) 的子串,子串中每个元素减去 \(1\)。
- \(1\le K\le N\le2000\)
- \(1\le M\le10^{18}\)
推导
首先如果不满足 \(m\equiv 0 \pmod k\) 那么无解。
反过来做,问题变成一个全为 \(0\) 的序列进行操作后的序列个数。
然后可以容易发现的是,\(k\) 个二操作等价于一个一操作,那么在这里我们可以加入限制,每个位置的二操作次数 \(\le k\),这样就避免了重复。
考虑把一个序列对应上一个操作序列,设 \(f[1,n-k+1]\) 表示二操作次数,\(g[1,n]\) 表示一操作次数。
有以下限制:
- \(\sum_{i=1}^{n-k+1} f_i + \sum_{i=1}^{n} g_i = m\div k\)
- \(\forall i \in[1,n-k+1],f_i < k\)
这里有个容斥,钦定有 \(i\) 个不合法,剩下的随便填。
\[ans=\sum_{i=0}^{n-k+1}(-1)^i{{n-k+1}\choose{i}}{{\frac{m}{k}-ik+2n-k}\choose{2n-k}}
\]

浙公网安备 33010602011771号