QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: jiangly

Posted at: 2025-12-14 07:25:30

Last updated: 2025-12-14 07:25:39

Back to Problem

题解

注意到第二种操作,在结合第一种操作之后,等价于将一个位置的值 $\pm 3$。因此在 $\bmod 3$ 意义下,第一种操作等价于将一个 $2\times 2$ 矩阵的一条对角线 $+1$,另一条对角线 $-1$。因此通过操作能得到的矩阵是满足每一行、每一列的总和都是 $3$ 的倍数的所有矩阵。

假设值域范围是 $[0,k)$,如果 $k$ 是 $3$ 的倍数,那么答案显然是 $k^{hw}3^{-(h+w-1)}$。如果 $k$ 不是 $3$ 的倍数,直接暴力 DP 只能做到 $O(\mathrm{poly}(h,w))$ 的复杂度。

考虑一个 $h+w$ 元多项式 $$ \prod_{i=1}^h\prod_{j=1}^w\sum_{v=0}^{k-1}(x_iy_j)^v $$ 则我们想要的是每个元的次数都是 $3$ 倍数的项的系数之和。

利用单位根反演,我们知道这相当于将每个 $x_i,y_i$ 分别带入 $1,\omega,\omega^w$($\omega$ 是三次本原单位根)的 $3^{h+w}$ 个式子的平均值。

由于每个位置都是本质相同的,我们可以枚举 $r_0,r_1,r_2$ 分别表示有多少个 $x_i$ 带入了 $1,\omega,\omega^2$,则每一列的贡献就是独立的,因此答案可以表示成 $$ \frac{1}{3^{h+w}}\sum_{r_0+r_1+r_2=h}{h\choose r_1,r_1,r_2}\left(\sum_{i=0}^2f(0,i)^{r_0}f(1,i)^{r_1}f(2,i)^{r_2}\right)^w $$ 其中 $f(i,j)=\sum_{v=0}^{k-1}\omega^{(i+j)v}$。

时间复杂度 $O(h^2\log w+\log k)$。

Comments

No comments yet.