q-binomial 学习笔记
定义
容易发现 \({n \brack m}_1 = \binom{n}{m}\)。
同时,展开可得:
结论
- \({n \brack m}_q = {n \brack n-m}_q\)
显然。
- 若 \(n \ge 1\), \({n \brack m}_q = {n-1 \brack m-1}_q + q^m {n-1 \brack m}_q\)
证明
下文的 \(q\) 为 \(q\) 无线趋近于 q
的。
带入 \(m = n - m\) 可以证明 \({n \brack m}_q = q^{n-m} {n-1 \brack m-1}_q + {n-1 \brack m}_q\)。
同时我们得到了一个 \({n \brack m}_q\) 的组合意义: 从 \((0,0)\) 开始,每次向上或向右走一步,走到 \((n-m,m)\) 的所有路径中,\(q^{路径右下方的格子数}\) 的和。
- \(\prod_{i=0}^{n-1} (1+q^iy) = \sum\limits_{i=0}^n q^{\binom{i}{2}} {n \brack i}_q y^i\)
证明
在 \(n = 1\) 的时候显然满足。
\(n > 1\) 时:
同时,我们又得到了一个 \({n \brack i}_q\) 的组合意义:在一个长度为 \(n\) 的序列中,取集合 \(S\),\({n \brack i}_q = \sum\limits_{|S| = i} \prod_{i \in S} q^{i 前没有被选的元素数}\)
- \({n + m \brack k}_q = \sum\limits_{i=0}^k q^{(n-i)(k-i)} {n \brack i}_q {m \brack k-i}_q\)
证明
可以观察其组合意义:\({n + m \brack k}_q\) 即为有长度为 \(n\) 的序列,取集合 \(S\),\(\prod_{i \in S} q^{i 前没有被选的元素数}\)。
拆成左右两半,左边 \(n\) 个元素,右边 \(m\) 个元素。设左边集合为 \(S_l\),右边为 \(S_r\),那么:
左边贡献为 \(\prod_{i \in S_l} q^{左边 i 前没有被选的元素数}\),右边为 \(\prod_{i \in S_r} q^{i 前没有被选的元素数 + n - |S_l|} \;\;\;\;\;\;\;\;\;\;\; = q^{(n-|S_l|)|S_r|} \prod_{i \in S_r} q^{i 前没有被选的元素数}\)。
原式相当于枚举 \(|S_l|\),然后相乘两边贡献。
- \({n + m + 1 \brack n + 1}_q = \sum\limits_{i=0}^m q^i {n + i \brack n}_q\)
证明:不断展开结论 2
中的 \({n \brack m}_q = q^{n-m} {n-1 \brack m-1}_q + {n-1 \brack m}_q\) 即可。
- \(\frac{1}{\prod_{i=0}^n (1-q^ix)} = \sum\limits_{i \ge 0} x^i {i+n \brack n}_q\)
证明
考虑数学归纳。在 \(n = 0\) 的时候显然成立。
因此有 \(F = \frac{1}{1 - q^nx} \frac{1}{\prod_{i=0}^{n - 1} (1-q^ix)} = \frac{1}{\prod_{i=0}^{n} (1-q^ix)}\)。
试试看!
CF1603F
考虑如何求秩为 \(r\) 的 \(n\) 元组个数。
考虑让初始序列只剩下基中的元素,然后再在元素间插入。基中的元素只要满足前面的元素凑不出来当前元素即可,显然方案数是 \(\prod_{0 \le i < r} (2^k - 2^i)\)。
接着在基中的元素间插入。插入在第 \(i\) 个元素之后的方案数显然是 \(2^i\)。
因此插入产生贡献的生成函数是 \(\prod_{0 \le i \le r} \frac{1}{1-2^ix} [x^{n-r}]\)。
根据结论 6,我们可以得到 \(\prod_{0 \le i \le r} \frac{1}{1-2^ix} [x^{n-r}] = {n \brack r}_2\)。
因此秩为 \(r\) 的 \(n\) 元组个数为 \({n \brack r}_2\prod_{0 \le i < r} (2^k - 2^i)\)
考虑原问题怎么做。
如果 \(x = 0\),那么答案就是秩为 \(k\) 的矩阵个数。
如果 \(x \neq 0\),可以发现对所有 \(x\) 答案都是一样的,所以只要算出能表示出多少非 \(0\) 数即可。如果秩为 \(r\),那能表示出 \(2^r-1\) 个数,所以直接做即可。
SOJ #703. 【SPC #3】布尔立方 ~ Boolean Cube
发现如果不考虑主视和左视互不相同,是好做的。
考虑容斥,钦定左视图分成了 \(i\) 组,主视图分成了 \(j\) 组,设其答案为 \(G_{i,j}\)。设左视图恰好分成了 \(i\) 组,主视图恰好分成了 \(j\) 组的方案为 \(F_{i,j}\)。
那么有 \(G_{n,m} = \sum\limits_{i \le n} \sum\limits_{j \le m} \begin{Bmatrix} n \\ i \end{Bmatrix}\begin{Bmatrix} m \\ j \end{Bmatrix} F_{i,j}\)。
考虑斯特林反演,得 \(F_{n,m} = \sum\limits_{i \le n} \sum\limits_{j \le m} \begin{bmatrix} n \\ i \end{bmatrix}\begin{bmatrix} m \\ j \end{bmatrix} (-1)^{n-i+m-j} G_{i,j}\)。
因此答案为 :
根据上一题的结论,有 \(G_{n,m} = \prod_{1 \le k \le H} {n \brack r_k}_2 \prod_{0 \le i < r_k} (2^m - 2^i)\)
而 \(\prod_{0 \le i < r_k} (2^m - 2^i) = \prod_{0 \le i < r_k} 2^i(2^{m-i} - 1) = 2^{\binom{r_k}{2}} \frac{[m]!_2}{[m-r_k]!_2}\)
注意到现在第一维和第二维无关了!
考虑如何对所有 \(i\) 算出 \(f_i = \prod_{1 \le k \le H} \frac{[i]!_2}{[i-r_k]!_2}\)。这里只有乘法,因此求 \(\ln\) 之后就变成了 \(H\ln([i]!_2) - \sum_{1 \le k \le H} \ln([i-r_k]!_2)\),卷积即可(题解做法好像是 CZT,差分一下确实是 CZT 的形式,可能会更好写)
然后目标变为了对所有 \(0 \le N \le 10^5\),求 \(g_N = \sum\limits_{i \le N} \begin{bmatrix} N \\ i \end{bmatrix} (-1)^{N-i} f_i\) 的值。
观察到这很像是下降幂转普通幂的柿子,但转移矩阵似乎恰好反了。
因此考虑转置原理。我们要求的是:
\(\begin{pmatrix} \begin{bmatrix} 0 \\ 0 \end{bmatrix} & -\begin{bmatrix} 0 \\ 1 \end{bmatrix} & \begin{bmatrix} 0 \\ 2 \end{bmatrix} & \cdots& (-1)^n\begin{bmatrix} 0 \\ n \end{bmatrix} \\ -\begin{bmatrix} 1 \\ 0 \end{bmatrix} & \begin{bmatrix} 1 \\ 1 \end{bmatrix} & -\begin{bmatrix} 1 \\ 2 \end{bmatrix} & \cdots& (-1)^{n-1} \begin{bmatrix} 1 \\ n \end{bmatrix} \\ \begin{bmatrix} 2 \\ 0 \end{bmatrix} & -\begin{bmatrix} 2 \\ 1 \end{bmatrix} & \begin{bmatrix} 2 \\ 2 \end{bmatrix} & \cdots& (-1)^{n-2}\begin{bmatrix} 0 \\ n \end{bmatrix} \\ \vdots&\vdots&\vdots&\ddots&\vdots\\ (-1)^n\begin{bmatrix} n \\ 0 \end{bmatrix} & (-1)^{n-1}\begin{bmatrix} n \\ 1 \end{bmatrix} & (-1)^{n-2}\begin{bmatrix} n \\ 2 \end{bmatrix} & \cdots& (-1)^{n-n}\begin{bmatrix} n \\ n \end{bmatrix} \\ \end{pmatrix} f\)
考虑求其转置:给出 \(u\),求 \(v_k = \sum\limits_{i=0}^{n} u_i (-1)^{n-i} \begin{bmatrix} i \\ k \end{bmatrix}\)。
这下就是下降幂转普通幂了!