Qoj 17472. Passing Ball Problem

记录一下 \(p\) 矩阵随机怎么做。
这个题方程类似于 \(\displaystyle F_i * P_{i,j} = I + x^{\{i\}} F_{j}\),直接解方程需要同时处理 \(O(n2^n)\) 个未知数,显然不可接受。
考虑两边进行 \(\rm FWT\),这样就能把每一位独立开。
具体地,这个题的方程是:
但是 \(S=\varnothing\) 有 corner,设 \(v_i = 1 + \sum_j p_{i,j}F_{\{i\},j}\),则有
写成向量形式
两边 \(\rm FWT\) 即可得到
也就是每一位就独立了。我们对每一位分别解方程,可以得到 \(\hat F_{S,i} = \sum_{j}a_j x_j + b\)。但是 \(S=\varnothing\) 是解不出来的,所以再凑几个方程。
发现 \(\sum_{S} \hat F_{S,i} = 2^n F_{\varnothing,i} = 0\),也就是 \(\hat F_{\varnothing,i} = - \sum_{S \neq \varnothing} \hat F_{S,i}\)。所以对所有非空的 \(F_{S,i}\) 解出来之后代入 \(S=\varnothing\) 的方程即可。
复杂度 \(O(2^nn^3)\)。
再记录一个做法。
设矩阵 \(A(x)\) 中的元素是关于时间的生成函数。\([x^k]A(x)_{i,j}\) 表示从 \(i\) 开始传球,经过 \(k\) 步后奇偶状态为 \(0\) 且下一次该 \(j\) 传球的概率。注意这里传球永不停止。
设转移矩阵 \(M_{i,j} = p_{i,j}t_i\),其中 \(t_i\) 用于记录 \(i\) 的奇偶性。则一次转移可以看做乘上 \(xM\),(在模 \(\prod_i (t_i^2-1)\) 的意义下)。则
对 \([t_0^0t_1^0 \cdots t_{n-1}^0]\) 单位根反演,即
设矩阵 \(F(x)\),其中 \(F(x)_{i,j}\) 是首次回到奇偶性为 \(0\) 的时间的概率生成函数。发现有
也就是 \(F(x) = I - A(x)^{-1}\)。所以求出来 \(A\) 后 \(F\) 也是好求的。我们实际上要求的是 \(F'(1)\)。这个东西要求 \(F\) 有良好的封闭形式,显然这不太现实。记录分式也不可行,因为对 \(2^n\) 个分式求和很区。
在这里引入泰勒展开:
观察这个式子,它实际上说明了,如果将 \(x\) 换元为 \(x-x_0\),那么函数中的系数就会出现 \(x_0\) 的所有导数。因此如果我们在 \(x_0=1\) 处展开,它的一次项就会是 \(F'(1)\)。
令 \(w=x-1\) 并换元,现在我们需要求一些 \(\bmod w^2\) 意义下的矩阵的逆。如果某一位元素为 \(a+bw(a\neq 0)\),我们可以在 \(\bmod w^2\) 下求出其逆元。
这样四则运算都是良定义的,就可以直接进行高斯消元,并求出 \(A(w) \bmod w^2\) 和 \(F(w) \bmod w^2\),然后利用 \(F(w)\) 的一次项得到答案。

浙公网安备 33010602011771号