\(q\)-analog
\(q\)-analog 是一类公式的推广方式:把对象 \(A\) 推广成依赖参数 \(q\) 的对象 \(A(q)\),并使
\[\lim_{q\to1}A(q)=A.
\]
例如,可以把组合数推广成 \(q\)-组合数。
定义
\(q\)-整数
\[[n]_q=\sum_{i=0}^{n-1}q^i=1+q+\cdots+q^{n-1}.
\]
当 \(q\ne1\) 时,
\[[n]_q=\frac{1-q^n}{1-q}.
\]
\(q\)-阶乘
\[[n]_q!=\prod_{i=1}^n[i]_q,\qquad [0]_q!=1.
\]
\(q\)-组合数
\[\begin{bmatrix}n\\m\end{bmatrix}_q
=\frac{[n]_q!}{[m]_q![n-m]_q!}.
\]
约定 \(m<0\) 或 \(m>n\) 时 \(\begin{bmatrix}n\\m\end{bmatrix}_q=0\)。
当 \(q\to1\) 时,三者分别退化为 \(n,n!,\binom nm\)。另外,
\[\begin{bmatrix}n\\m\end{bmatrix}_q
=\prod_{i=0}^{m-1}\frac{1-q^{n-i}}{1-q^{m-i}}
=\prod_{i=0}^{m-1}\frac{q^n-q^i}{q^m-q^i}.
\]
乘积形式的证明
由定义,
\[\begin{aligned}
\begin{bmatrix}n\\m\end{bmatrix}_q
&=\frac{[n]_q[n-1]_q\cdots[n-m+1]_q}
{[m]_q[m-1]_q\cdots[1]_q}\\
&=\prod_{i=0}^{m-1}\frac{1-q^{n-i}}{1-q^{m-i}}.
\end{aligned}
\]
又有
\[\frac{q^n-q^i}{q^m-q^i}
=\frac{q^i(q^{n-i}-1)}{q^i(q^{m-i}-1)}
=\frac{1-q^{n-i}}{1-q^{m-i}}.
\]
基本恒等式
\(q\)-对称恒等式
\[\boxed{
\begin{bmatrix}n\\m\end{bmatrix}_q
=\begin{bmatrix}n\\n-m\end{bmatrix}_q
}.
\]
证明
\[\begin{bmatrix}n\\n-m\end{bmatrix}_q
=\frac{[n]_q!}{[n-m]_q![m]_q!}
=\begin{bmatrix}n\\m\end{bmatrix}_q.
\]
\(q\)-吸收恒等式
\[\boxed{
[m]_q\begin{bmatrix}n\\m\end{bmatrix}_q
=[n]_q\begin{bmatrix}n-1\\m-1\end{bmatrix}_q
}.
\]
等价地,
\[\begin{bmatrix}n\\m\end{bmatrix}_q
=\frac{[n]_q}{[m]_q}
\begin{bmatrix}n-1\\m-1\end{bmatrix}_q.
\]
证明
\[\begin{aligned}
\frac{[n]_q}{[m]_q}
\begin{bmatrix}n-1\\m-1\end{bmatrix}_q
&=\frac{[n]_q}{[m]_q}
\frac{[n-1]_q!}{[m-1]_q![n-m]_q!}\\
&=\frac{[n]_q!}{[m]_q![n-m]_q!}.
\end{aligned}
\]
\(q\)-Pascal 恒等式
\[\boxed{
\begin{bmatrix}n\\m\end{bmatrix}_q
=q^{n-m}\begin{bmatrix}n-1\\m-1\end{bmatrix}_q
+\begin{bmatrix}n-1\\m\end{bmatrix}_q
}
\]
以及
\[\boxed{
\begin{bmatrix}n\\m\end{bmatrix}_q
=\begin{bmatrix}n-1\\m-1\end{bmatrix}_q
+q^m\begin{bmatrix}n-1\\m\end{bmatrix}_q
}.
\]
证明
使用乘积形式并通分。第一项为
\[q^{n-m}
\frac{\prod_{i=0}^{m-2}(1-q^{n-1-i})}
{\prod_{i=1}^{m-1}(1-q^i)},
\]
第二项为
\[\frac{\prod_{i=0}^{m-1}(1-q^{n-1-i})}
{\prod_{i=1}^{m}(1-q^i)}.
\]
提出公因子
\[\frac{\prod_{i=0}^{m-2}(1-q^{n-1-i})}
{\prod_{i=1}^{m-1}(1-q^i)},
\]
剩余部分为
\[q^{n-m}+\frac{1-q^{n-m}}{1-q^m}
=\frac{1-q^n}{1-q^m}.
\]
乘回公因子即为 \(\begin{bmatrix}n\\m\end{bmatrix}_q\)。第二种形式由第一种形式配合对称恒等式得到。
\(q\)-二项式定理
\[\boxed{
\prod_{i=0}^{n-1}(1+q^ix)
=\sum_{m=0}^nq^{\binom m2}
\begin{bmatrix}n\\m\end{bmatrix}_qx^m
}.
\]
证明
对 \(n\) 归纳。\(n=0\) 时两边均为 \(1\)。
设
\[P_n(x)=\prod_{i=0}^{n-1}(1+q^ix).
\]
由 \(P_n(x)=(1+q^{n-1}x)P_{n-1}(x)\),\(x^m\) 的系数为
\[q^{\binom m2}\begin{bmatrix}n-1\\m\end{bmatrix}_q
+q^{n-1+\binom{m-1}{2}}
\begin{bmatrix}n-1\\m-1\end{bmatrix}_q.
\]
利用
\[n-1+\binom{m-1}{2}=\binom m2+n-m,
\]
提出 \(q^{\binom m2}\),括号内由 \(q\)-Pascal 恒等式化为 \(\begin{bmatrix}n\\m\end{bmatrix}_q\)。
带权子集的组合意义
令 \(U=\{1,2,\ldots,n\}\)。对于 \(m\) 元子集 \(S\subseteq U\) 及 \(x\in S\),定义
\[c_x=\sum_{i=1}^{x-1}[i\notin S].
\]
则
\[\boxed{
\begin{bmatrix}n\\m\end{bmatrix}_q
=\sum_{\substack{S\subseteq U\\|S|=m}}
\prod_{x\in S}q^{c_x}
}.
\]
证明
设 \(S=\{s_1<\cdots<s_m\}\)。在 \(s_j\) 前共有 \(s_j-1\) 个元素,其中 \(j-1\) 个被选,故
\[c_{s_j}=s_j-j.
\]
展开 \(q\)-二项式定理左侧。子集 \(S\) 对 \(x^m\) 系数的贡献为
\[q^{\sum_{j=1}^m(s_j-1)}
=q^{\binom m2+\sum_{j=1}^m(s_j-j)}
=q^{\binom m2}\prod_{x\in S}q^{c_x}.
\]
因此
\[[x^m]\prod_{i=0}^{n-1}(1+q^ix)
=q^{\binom m2}
\sum_{\substack{S\subseteq U\\|S|=m}}\prod_{x\in S}q^{c_x}.
\]
与已证的 \(q\)-二项式定理比较 \(x^m\) 的系数并约去 \(q^{\binom m2}\)。
进一步的恒等式
\(q\)-上指标求和
\[\boxed{
\begin{bmatrix}n+1\\m+1\end{bmatrix}_q
=\sum_{i=m}^nq^{i-m}\begin{bmatrix}i\\m\end{bmatrix}_q
}.
\]
证明
由第一种 \(q\)-Pascal 恒等式,
\[q^{i-m}\begin{bmatrix}i\\m\end{bmatrix}_q
=\begin{bmatrix}i+1\\m+1\end{bmatrix}_q
-\begin{bmatrix}i\\m+1\end{bmatrix}_q.
\]
从 \(i=m\) 到 \(n\) 求和后首尾相消,剩下
\[\begin{bmatrix}n+1\\m+1\end{bmatrix}_q
-\begin{bmatrix}m\\m+1\end{bmatrix}_q
=\begin{bmatrix}n+1\\m+1\end{bmatrix}_q.
\]
\(q\)-Vandermonde 卷积
\[\boxed{
\begin{bmatrix}n+m\\k\end{bmatrix}_q
=\sum_{i=0}^k
q^{(n-i)(k-i)}
\begin{bmatrix}n\\i\end{bmatrix}_q
\begin{bmatrix}m\\k-i\end{bmatrix}_q
}.
\]
证明
把 \(\{1,\ldots,n+m\}\) 分成前 \(n\) 个和后 \(m\) 个元素,枚举前一段选了 \(i\) 个元素。两段内部的权值分别为
\[\begin{bmatrix}n\\i\end{bmatrix}_q,\qquad
\begin{bmatrix}m\\k-i\end{bmatrix}_q.
\]
前段有 \(n-i\) 个未选元素,后段有 \(k-i\) 个已选元素,跨段产生 \((n-i)(k-i)\) 个“未选在前、已选在后”的二元组,故额外权值为 \(q^{(n-i)(k-i)}\)。
倒数型生成函数
\[\boxed{
\prod_{i=0}^{d}\frac1{1-q^ix}
=\sum_{r\ge0}\begin{bmatrix}r+d\\d\end{bmatrix}_qx^r
}.
\]
证明
设左边 \(x^r\) 的系数为 \(f(d,r)\)。由
\[(1-q^dx)F_d(x)=F_{d-1}(x)
\]
得到
\[f(d,r)=f(d-1,r)+q^df(d,r-1).
\]
而第二种 \(q\)-Pascal 恒等式给出
\[\begin{bmatrix}r+d\\d\end{bmatrix}_q
=\begin{bmatrix}r+d-1\\d-1\end{bmatrix}_q
+q^d\begin{bmatrix}r+d-1\\d\end{bmatrix}_q.
\]
两者递推与初值 \(f(d,0)=1\) 相同。
有限域中的组合意义
当 \(q\) 是素数幂时,
\[\boxed{
\begin{bmatrix}n\\m\end{bmatrix}_q
=\mathbb F_q^n\text{ 中 }m\text{ 维子空间的数量}
}.
\]
证明
在 \(\mathbb F_q^n\) 中有序选择 \(m\) 个线性无关向量,方案数为
\[\prod_{i=0}^{m-1}(q^n-q^i).
\]
一个固定的 \(m\) 维子空间有
\[\prod_{i=0}^{m-1}(q^m-q^i)
\]
组有序基。因此子空间数为
\[\frac{\prod_{i=0}^{m-1}(q^n-q^i)}
{\prod_{i=0}^{m-1}(q^m-q^i)}
=\begin{bmatrix}n\\m\end{bmatrix}_q.
\]
CF1603F October 18, 2017
把每个 \(k\) 位二进制数视为 \(\mathbb F_2^k\) 中的向量,异或即向量加法。
\(x=0\)
此时要求 \(a_1,\ldots,a_n\) 线性无关,答案为
\[\boxed{
\prod_{i=1}^n(2^k-2^{i-1})
}.
\]
证明
选第 \(i\) 个向量时,前 \(i-1\) 个向量张成的空间有 \(2^{i-1}\) 个元素,因此有 \(2^k-2^{i-1}\) 种合法选择。若 \(n>k\),乘积中出现零因子。
\(x\ne0\)
枚举序列的线性基大小 \(r\)。答案为
\[\boxed{
\sum_{r=0}^{\min(n,k-1)}
\begin{bmatrix}n\\r\end{bmatrix}_2
\prod_{i=1}^r(2^k-2^i)
}.
\]
为什么所有非零 $x$ 等价
任意两个非零向量 \(x,y\) 都可分别扩充成一组基。将第一组基逐个映射到第二组基,得到可逆线性变换 \(T\),满足 \(T(x)=y\)。
对序列中每个向量同时施加 \(T\)。由于 \(T\) 可逆且线性,
\[\bigoplus_{i\in S}a_i=x
\iff
\bigoplus_{i\in S}T(a_i)=y.
\]
这给出了两类序列间的双射。
第一部分:选择有序线性基
从左到右扫描序列,得到有序基 \(B_1,\ldots,B_r\)。不能异或出 \(x\) 等价于
\[x,B_1,\ldots,B_r
\]
线性无关。
选择 \(B_i\) 时,\(x,B_1,\ldots,B_{i-1}\) 张成的空间大小为 \(2^i\),所以 \(B_i\) 有 \(2^k-2^i\) 种选择。总数为
\[\prod_{i=1}^r(2^k-2^i).
\]
第二部分:由固定有序基生成序列
设第 \(i\) 个基向量出现后、下一个基向量出现前有 \(j_i\) 个非基向量,其中
\[j_0+\cdots+j_r=n-r.
\]
这 \(j_i\) 个向量必须在前 \(i\) 个基向量张成的空间中,每个有 \(2^i\) 种选择。因此总数为
\[\begin{aligned}
[z^{n-r}]
\prod_{i=0}^r\sum_{j\ge0}2^{ij}z^j
&=[z^{n-r}]\prod_{i=0}^r\frac1{1-2^iz}\\
&=\begin{bmatrix}n\\r\end{bmatrix}_2.
\end{aligned}
\]
也可使用带权子集解释:选中位置是基向量,每一对“基向量在前、非基向量在后”贡献一个因子 \(2\);反转 \(01\) 串后即为 \(q\)-组合数的权值。
记第 \(r\) 项为
\[F_r=\begin{bmatrix}n\\r\end{bmatrix}_2
\prod_{i=1}^r(2^k-2^i).
\]
则
\[F_0=1,\qquad
F_r=F_{r-1}
\frac{2^{n-r+1}-1}{2^r-1}(2^k-2^r).
\]
因此可以在 \(O(\min(n,k))\) 时间内计算。
ARC139F Many Xor Optimization Problems
ARC139F Many Xor Optimization Problems
题目链接
给定长度为 \(n\)、值域为 \([0,2^m)\) 的序列。对每个序列,求其所有子序列异或和的最大值,再对所有序列求和。
把每个数看成 \(\mathbb F_2^m\) 中的向量。一个序列能得到的所有子序列异或和,恰好是这些向量张成的线性空间。因此可以枚举空间的维数 \(k\),再枚举其行最简线性基的主元位
\[0\le a_1<a_2<\cdots<a_k<m.
\]
固定一个 \(k\) 维空间后,原序列张成该空间,等价于它在任意一组基下的坐标矩阵满秩。转置后依次选择 \(k\) 个线性无关的 \(n\) 维列向量,方案数为
\[R_k=\prod_{i=0}^{k-1}(2^n-2^i).
\]
固定主元位 \(a_1,\ldots,a_k\)。第 \(i\) 个基向量在低于 \(a_i\) 的位置中,除去前 \(i-1\) 个主元位,其余位均可任取,因此具有 \(2^{a_i-(i-1)}\) 种填法。对应空间数为
\[\prod_{i=1}^k2^{a_i-(i-1)}
=2^{-\binom{k}{2}}\prod_{i=1}^k2^{a_i}.
\]
空间中的最大值是全部基向量的异或。所有主元位一定为 \(1\);其余不高于 \(a_k\) 的位,在所有合法填法中各有一半为 \(1\),故最大值之和除以空间数,即其平均值为
\[\frac12\left(2^{a_k+1}-1+\sum_{i=1}^k2^{a_i}\right).
\]
于是
\[\mathrm{Ans}
=\frac12\sum_{k=1}^{\min(n,m)}
R_k\,2^{-\binom{k}{2}}
\sum_{0\le a_1<\cdots<a_k<m}
\left(2^{a_k+1}-1+\sum_{i=1}^k2^{a_i}\right)
\prod_{i=1}^k2^{a_i}.
\]
记
\[C_k=\sum_{0\le a_1<\cdots<a_k<m}\prod_{i=1}^k2^{a_i}.
\]
由 \(q\)-二项式定理,
\[C_k=2^{\binom{k}{2}}\begin{bmatrix}m\\k\end{bmatrix}_2.
\]
对于含 \(\sum 2^{a_i}\) 的部分,先从所有 \(2^0+\cdots+2^{m-1}=2^m-1\) 中任选一位,再减去所选位不在 \(\{a_1,\ldots,a_k\}\) 中的情况。后一种情况等价于先选出 \(k+1\) 个位置,再指定其中一个不是主元位,因此
\[\begin{aligned}
&\sum_{0\le a_1<\cdots<a_k<m}
\left(\sum_{i=1}^k2^{a_i}\right)\prod_{i=1}^k2^{a_i}\\
&\qquad=(2^m-1)C_k-(k+1)C_{k+1}\\
&\qquad=2^{\binom{k}{2}}
\left(
(2^m-1)\begin{bmatrix}m\\k\end{bmatrix}_2
-(k+1)2^k\begin{bmatrix}m\\k+1\end{bmatrix}_2
\right).
\end{aligned}
\]
最后处理最高主元位:
\[\begin{aligned}
&\sum_{0\le a_1<\cdots<a_k<m}
2^{a_k+1}\prod_{i=1}^k2^{a_i}\\
&\qquad=2^{\binom{k-1}{2}+1}
\sum_{j=k-1}^{m-1}2^{2j}
\begin{bmatrix}j\\k-1\end{bmatrix}_2.
\end{aligned}
\]
利用吸收恒等式
\[(2^{j+1}-1)\begin{bmatrix}j\\k-1\end{bmatrix}_2
=(2^k-1)\begin{bmatrix}j+1\\k\end{bmatrix}_2
\]
和上指标求和
\[\sum_{j=r}^{s}2^{j-r}\begin{bmatrix}j\\r\end{bmatrix}_2
=\begin{bmatrix}s+1\\r+1\end{bmatrix}_2,
\]
直接化简:
\[\begin{aligned}
&\sum_{j=k-1}^{m-1}2^{2j}
\begin{bmatrix}j\\k-1\end{bmatrix}_2\\
&=\sum_{j=k-1}^{m-1}
\left(2^{j-1}(2^{j+1}-1)+2^{j-1}\right)
\begin{bmatrix}j\\k-1\end{bmatrix}_2\\
&=(2^{2k-2}-2^{k-2})
\begin{bmatrix}m+1\\k+1\end{bmatrix}_2
+2^{k-2}\begin{bmatrix}m\\k\end{bmatrix}_2.
\end{aligned}
\]
所以
\[\begin{aligned}
&\sum_{0\le a_1<\cdots<a_k<m}
2^{a_k+1}\prod_{i=1}^k2^{a_i}\\
&=2^{\binom{k}{2}}
\left(
(2^k-1)\begin{bmatrix}m+1\\k+1\end{bmatrix}_2
+\begin{bmatrix}m\\k\end{bmatrix}_2
\right)\\
&=2^{\binom{k}{2}}
\left(
(2^m-2^{m-k}+1)\begin{bmatrix}m\\k\end{bmatrix}_2
+(2^k-1)\begin{bmatrix}m\\k+1\end{bmatrix}_2
\right).
\end{aligned}
\]
将三部分代回,\(2^{\binom{k}{2}}\) 与外面的 \(2^{-\binom{k}{2}}\) 抵消,得到
\[\boxed{
\mathrm{Ans}
=\frac12\sum_{k=1}^{\min(n,m)}
\left(\prod_{i=0}^{k-1}(2^n-2^i)\right)
\left(
(2^{m+1}-2^{m-k}-1)\begin{bmatrix}m\\k\end{bmatrix}_2
-(k2^k+1)\begin{bmatrix}m\\k+1\end{bmatrix}_2
\right)
}.
\]
预处理
\[F_i=\prod_{j=1}^i(2^j-1),
\qquad
\begin{bmatrix}m\\k\end{bmatrix}_2
=\frac{F_m}{F_kF_{m-k}},
\]
即可在 \(\mathcal O(n+m)\) 时间、\(\mathcal O(m)\) 空间内计算。