20241114 NOIP训练赛 T3
简化题面:
有一个 \(n+1\) 行 \(k\) 列的 \(01\) 矩阵,行标号 \(0\sim n\),列标号 \(1\sim k\),求满足一下条件的矩阵个数,对 \(10^9+7\) 取模:
- 对于 \(0\sim n-1\) 行子矩阵中,没有一列全为 \(1\)。
- 对于 \(1\sim n\) 行子矩阵中,存在一列全为 \(0\)。
\(3\le k,n \le 10^{18}\)。
考虑中间 \(n − 1\) 行有多少列全是 \(0\),多少列全是 \(1\)。
设有 \(i\) 列全是 \(0\),\(j\) 列全是 \(1\) 选择哪些列的方案是 \(\binom{k}{i}\binom{k-i}{j}\)
其他每列的填法是 \(2^{n-1}-2\),所以方案数是 \((2^{n-1}-2)^{k-i-j}\)
对于第一行,\(j\) 列全是 \(1\) 的只能填 \(0\),其他格子随便填,方案数是 \(2^{k−j}\)
对于最后一行,\(i\) 列全是 \(0\) 的至少有一个填 \(0\),其他格子随便填,方案数是 \(2^{k−i}(2^i − 1)\)
综上答案为
\[\begin{aligned}
& \sum\limits_{i=0}^{k}\sum\limits_{j=0}^{k-i}\binom{k}{i}\binom{k-i}{j} \cdot (2^{n-1}-2)^{k-i-j} \cdot 2^{k−j} \cdot 2^{k−i}(2^i − 1) \\
& =\sum\limits_{i=0}^{k}\binom{k}{i}2^{k−i}(2^i − 1)\sum\limits_{j=0}^{k-i}\binom{k-i}{j}(2^{n-1}-2)^{k-i-j}2^{k−j} \\
& =\sum\limits_{i=0}^{k}\binom{k}{i}2^{k−i}2^i\sum\limits_{j=0}^{k-i}\binom{k-i}{j}(2^{n-1}-2)^{k-i-j}2^{k−j} - \sum\limits_{i=0}^{k}\binom{k}{i}2^{k−i}\sum\limits_{j=0}^{k-i}\binom{k-i}{j}(2^{n-1}-2)^{k-i-j}2^{k−j} \\
& =\sum\limits_{i=0}^{k}\binom{k}{i}2^k\sum\limits_{j=0}^{k-i}\binom{k-i}{j}(2^{n-1}-2)^{k-i-j}2^{k−j} - \sum\limits_{i=0}^{k}\binom{k}{i}2^{k}2^{−i}\sum\limits_{j=0}^{k-i}\binom{k-i}{j}(2^{n-1}-2)^{k-i-j}2^{k−j} \\
& =2^k(\sum\limits_{i=0}^{k}\binom{k}{i}\sum\limits_{j=0}^{k-i}\binom{k-i}{j}(2^{n-1}-2)^{k-i-j}2^{k−j} - \sum\limits_{i=0}^{k}\binom{k}{i}2^{−i}\sum\limits_{j=0}^{k-i}\binom{k-i}{j}(2^{n-1}-2)^{k-i-j}2^{k−j}) \\
& =2^k(\sum\limits_{i=0}^{k}\binom{k}{i}2^i2^{-i}\sum\limits_{j=0}^{k-i}\binom{k-i}{j}(2^{n-1}-2)^{k-i-j}2^{k−j} - \sum\limits_{i=0}^{k}\binom{k}{i}2^{−i}\sum\limits_{j=0}^{k-i}\binom{k-i}{j}(2^{n-1}-2)^{k-i-j}2^{k−j}) \\
\end{aligned}
\]
单看 \(2^{−i}\sum\limits_{j=0}^{k-i}\binom{k-i}{j}(2^{n-1}-2)^{k-i-j}2^{k−j}\):
\[\begin{aligned}
& 2^{−i}\sum\limits_{j=0}^{k-i}\binom{k-i}{j}(2^{n-1}-2)^{k-i-j}2^{k−j} \\
& =\sum\limits_{j=0}^{k-i}\binom{k-i}{j}(2^{n-1}-2)^{k-i-j}2^{k−i-j} \\
& =\sum\limits_{j=0}^{k-i}\binom{k-i}{j}(2^n-4)^{k-i-j}1^{k-i-j} \\
& =((2^n-4)+1)^{k-i} \\
& =(2^n-3)^{k-i}
\end{aligned}
\]
倒数第二步是二项式定理。
原式为
\[\begin{aligned}
& 2^k(\sum\limits_{i=0}^{k}\binom{k}{i}2^i(2^n-3)^{k-i} - \sum\limits_{i=0}^{k}\binom{k}{i}(2^n-3)^{k-i}) \\
&= 2^k(\sum\limits_{i=0}^{k}\binom{k}{i}2^i(2^n-3)^{k-i} - \sum\limits_{i=0}^{k}\binom{k}{i}(2^n-3)^{k-i}1^i) \\
&= 2^k((2+(2^n-3))^k-(2^n-3+1)^k) \\
&= 2^k((2^n-1)^k - (2^n-2)^k)
\end{aligned}
\]
答案即为
\[2^k((2^n-1)^k - (2^n-2)^k)
\]
使用快速幂计算即可,时间复杂度 \(O(\log)\)。