Codeforces1228E Another Filling the Grid
Description
给定一个$n \times n(1 \le n \le 250)$的矩阵,用$1 \sim k(1 \le k \le 10 ^ 9)$的数进行填充,每行每列最小值为$1$
求方案数
Solution
$f(i, j)$为至少有$i$行$j$列没有$1$的方案数
没有$1$的位置有$n (i + j) - i \cdot j$个,随便填的位置有$n ^ 2 - n(i + j) + i \cdot j$个
考虑全集$U$,即全部随便填,方案数为$k^{n ^ 2}$,即$f(0, 0)$
但这样不满足限制,需减去至少有一行或一列没有$1$的方案数,以满足一行(列)的限制
因为行列枚举必然会有重复,我们要再次加上重复的部分…以此类推
进行容斥,不难得到
$$
ans = \sum_{i = 0} ^n \sum_{j = 0} ^n f(i, j) \ =\sum _{i = 0} ^n \sum _{j = 0} ^n (-1) ^ {i + j} \cdot \binom {n} {i} \cdot \binom {n} {j} \cdot k ^ {n ^ 2 - n(i + j) + i \cdot j} \cdot (k - 1) ^ {n (i + j) - i \cdot j}
$$
这个时候已经可以$\mathcal {O}(n ^ 2 \log n)$做了,但是我们可以将其优化到$\mathcal {O}(n \log n)$
然而我太菜了不会优化,留个坑
Code
1 |
|