P9501 RiOI-2 likely
好好好好好题
\(T\) 组数据,给定 \(n, m, k\),求所有 \(2^n\) 个大小为 \(n\) 的由 \(\pm 1\) 组成的有标号环 \(a_{0\dots n-1}\) 中,有多少个满足 \(\sum_{i=0}^{n-1}\prod_{j=0}^{m-1}a_{(i+j)\ \bmod\ n}=k\)。对 \(998244353\) 取模。
\(1\le T\le 10, 2\le n, \sum n\le 5\times 10^6, |k|\le n, 2\le m\le n\)
显然的这就是对 \(b_i = \prod_{j=0}^{m-1}a_{(i+j)\ \bmod\ n}\) 中 \(-1\) 的个数进行了限制,以下重新令 \(k\) 表示这个个数。于是我们关心对于一个特定的 \(b\) 序列,如何判断是否存在 \(a\) 序列与其对应,以及对应的 \(a\) 序列有多少个。
对于任何一个 \(b\),考虑它对应的 \(c_i = b_ib_{i+1} = a_ia_{(i+m)\ \bmod\ n}\),显然地,下标划分成了 \(g = \gcd(n,m)\) 个不同的小环。这些小环上,\(c\) 的数值乘积为 \(0\),也就是说相邻两个 \(b\) 小环的乘积相等,也就是所有 \(b\) 小环的乘积都相等,这也就是说,所有小环上要么都有奇数个 \(-1\),要么都有偶数个。所有合法的 \(b\) 数组必须满足这条性质。
当确定了一个满足上述条件的 \(b\) 数组后,通过它对应的 \(c\) 数组,我们确定了每个环上的 \(a\) 的相互关系,也就是说,只要确定其中的任何一个元素,就能确定整个环。此时对应的 \(a\) 数组恰好有 \(2^g\) 个(它们并不都合法)。\(b\) 可以由 \(c\) 和 \(b_0\) 唯一确定,也就是说,当前找到的满足 \(c\) 限制的 \(a\) 数组,如果同时满足 \(b_0\) 的限制,就能唯一对应上我们正在考虑的 \(b\) 数组。
对于每个环,只有将其整体反转的操作可以进行。当 \(\frac{m}{g}\) 为偶数时,对任何一个环做反转都是没有用的。只有一部分(\(2^{n-g}\) 个满足某种性质的)\(b\) 是合法的,并且这些 \(b\) 恰好对应了 \(2^g\) 个合法的 \(a\)(每个环上 \(a\) 都可以任意反转)。而当 \(\frac{m}{g}\) 为奇数时,每个满足先前限制的 \(b\) (\(2^{n-g+1}\) 个)都恰好对应了 \(2^{g-1}\) 个合法的 \(a\)。分别考虑两种情况的答案。
首先考虑 \(\frac{m}{g}\) 为奇数。令 \(t = \frac{n}{g}\),则答案为:
接下来考虑 \(\frac{m}{g}\) 为偶数的情况。注意到每个环上 \(a\) 中所有元素会被算恰好 \(\frac{m}{g}\) 次,所以我们相当于额外限制所有小环上有偶数个 \(-1\)。所以答案即为:
怎么求这个东西呢?注意到设 \(\sum_{i=0}^t(-1)^i\binom{t}{i}z^i = (1-z)^t, \sum_{i=0}^t\binom{t}{i}z^i = (1+z)^t\)。所以
显然求这两个多项式的点值需要用到长度为 \(\Theta(tg = n)\) 级别的 NTT,这个显然不可能过。但是由后面的封闭形式,很容易用快速幂求出单位根处的点值,大大加速求解过程。时间复杂度为 \(\Theta(n\log V)\),常数很小。