Matrix Permanent modulo 2^k

求矩阵的积和式 \(\bmod 2^k\) 的值。

(防剧透)

解法

source

考虑矩阵是随机的情况。

考虑容斥计算积和式的方法(Ryser's formula),式子为:

\[\sum_{S\subseteq \{1,2,...,n\}} (-1)^{n-|S|}F(S),F(S)=\prod_{i=1}^{n}(\sum_{j\in S} A_{i,j}) \]

考虑一个 \(F(S)\) 何时不会为 \(0\)

\(c_i = \sum_{j\in S} A_{i,j}\)。当 \(c_i=0\) 的个数 \(<k\) 的时候 \(F(S)\) 才可能不为 \(0\)

于是合法的 \(c\) 数组只有 \(\sum_{i=0}^{k-1}\binom{n}{i}\) 个。

枚举每种 \(c\) 数组,每次 \(O(n^3/w)\) 解方程解出集合 \(S\),可能无解或者有多组解。

当方程所有系数随机的时候,一组方程期望有 \(1\) 个解,总共 \(O(cnt)\) 个,直接每个解暴力算。

\(k=2\) (mod 4) 的时候,只有 \(n+1\) 组方程要解,看似是 \(O(n^4/w)\) 的,但可以用带修改线性基做到 \(O(n^3/w)\)

如果矩阵不随机呢?可以加一行一列,令 \(a_{n+1,n+1}=1,a_{n+1,[0...n]}=Rand,a_{[0...n],n+1}=0\),容易发现答案不变,并且做到了随机的效果。

posted @ 2023-06-24 19:54  Rainbow_qwq  阅读(492)  评论(0编辑  收藏  举报