省选05. 线性代数

P6772 [NOI2020] 美食家

先假设没有美食节,容易得到一个矩阵优化的 dp。

加上美食节过后分成 \(k\) 段考虑,每段分别矩阵快速幂,时间复杂度为 \(O((5n)^3k\log T)\)

这并不能通过本题。

可以思考快速幂优化乘法的本质,预处理出转移矩阵的 \(2\) 的幂。

原本快速幂是将一堆 \(5n\times 5n\) 的矩阵乘起来,最后再乘一个 \(1\times 5n\) 的矩阵,每一段的时间复杂度达到 \(O((5n)^3\log T)\)

可以考虑使用结合律交换顺序,每一段分别用 \(1\times 5n\) 的矩阵乘一堆 \(5n\times 5n\) 的矩阵,这样复杂度降为 \(O((5n)^2\log T)\)

因此总复杂度降为 \(O((5n)^3\log T+(5n)^2k\log T)\)

CF113D Museum

\(f(u,v)(u\neq v)\) 表示分别从 \(u\)\(v\) 出发,在 \(s\) 相遇的概率。

\(deg(u)\) 表示 \(u\) 的度数。

假设从 \((u,v)\) 走一条边到 \((i,j)\)

\[f(u,v)=p(u)p(v)f(u,v)+\sum_{i\ne u}f(i,v)\frac{1-p(u)}{deg(u)}p(v)+\sum_{j\neq v}f(u,j)\frac{1-p(v)}p(u){deg(v)}+\sum_{i\neq u}\sum_{j\neq v}f(i,j)\frac{(1-p(u))(1-p(v))}{deg(u)deg(v)} \]

移项得

\[(1-p(u)p(v))f(u,v)-\sum_{i\ne u}f(i,v)\frac{1-p(u)}{deg(u)}p(v)-\sum_{j\neq v}f(u,j)\frac{1-p(v)}{deg(v)}p(u)-\sum_{i\neq u}\sum_{j\neq v}f(i,j)\frac{(1-p(u))(1-p(v))}{deg(u)deg(v)}=0 \]

可以发现 \(f(s,s)=1\),对于不等于 \(s\)\(i\)\(f(i,i)=0\)

因此,这 \(n^2-n\) 个方程每个右边都是一堆关于 \(f(i,i)\) 的线性组合。

左边有 \(n^2-n\) 个未知数,右边有 \(n\) 个参数,对于左边高斯消元即可。

注意特判起点相同的情况。

P2973 [USACO10HOL]Driving Out the Piggies G

对于需要使用高斯消元解决的 dp 问题,必须保证边界值好确定。

\(f(u)\) 表示经过 \(u\) 点的期望次数。

\[f(u)=[u=1]+\sum_{u\to v}f(v)\frac{1-\frac{p}{q}}{deg(v)} \]

最后,\(i\) 点的答案为 \(f(i)\frac{p}{q}\)

CF24D Broken robot

\(f(i,j)\) 表示从 \((i,j)\) 开始走,走到第 \(n\) 行的期望步数。

\(f(n,i)=0\)

枚举 \((i,j)\) 可能走到哪里,设走到 \((x,y)\) 的概率为 \(p\),答案为

\[f(i,j)=1+\sum_{x,y}f(x,y)p \]

直接高斯消元复杂度是 \(O(n^6)\)

但是由于不能往上走,因此可以一行一行地高斯消元,复杂度变为 \(O(n^4)\)

再仔细观察矩阵发现系数都在主对角线附近,因此可以做到 \(O(n^2)\)

UVA12177 First Knight

\(f(i,j)\) 表示从 \((i,j)\) 走到 \((n,m)\) 的期望步数。

\(dp(n,m)=0\)

\[f(i,j)=1+\sum_{x,y}f(x,y)p((x,y)\rightarrow(i,j)) \]

暴力高斯消元复杂度为 \(O(n^3m^3)\)

将坐标建立与编号的映射 \((i,j)\longrightarrow (n-i)m+m-j+1\)

可以考虑只保留上三角矩阵,即消掉下三角矩阵。

对于一个未知数 \(i\),只需要遍历 \((i,i)\)\((i+m,i+2m)\) 的矩阵就行了,时间复杂度优化为 \(O(nm^3)\)

P7016 [CERC2013]Captain Obvious and the Rabbit-Man

构造多项式

\[\begin{aligned} A(x) &=(x-F_1)(x-F_2)\cdots(x-F_k)\\ &= x^k+b_1x^{k-1}+b_2x^{k-2}+\cdots +b_k \end{aligned} \]

\[A(F_i)=F_i^k+b_1F_i^{k-1}+b_2F_i^{k-2}+\cdots +b_k=0 \]

\(i=1\to k\) 求和

\[\sum_{i=1}^kA(F_i)=\sum_{i=1}^kF_i^k+b_1\sum_{i=1}^kF_i^{k-1}+b_2\sum_{i=1}^{k}F_i^{k-2}+\cdots+b_{k-1}\sum_{i=1}^kF_i+b_kk=0 \]

发现这样似乎没法用到题目给出的 \(p_i\),于是可以考虑先对 \(A(F_i)\)\(a_i\) 再求和

\[\sum_{i=1}^kA(F_i)a_i=\sum_{i=1}^kF_i^ka_i+b_1\sum_{i=1}^kF_i^{k-1}a_i+b_2\sum_{i=1}^{k}F_i^{k-2}a_i+\cdots+b_{k-1}\sum_{i=1}^kF_ia_i+b_k\sum_{i=1}^ka_i=0 \]

\[\sum_{i=1}^kA(F_i)a_i=p_k+b_1p_{k-1}+b_2p_{k-2}+\cdots+b_{k-1}p_1+b_k\sum_{i=1}^ka_i=0 \]

推到这里还是推不动,再在前面求和之前乘个 \(F_i\)

\[\sum_{i=1}^kA(F_i)a_iF_i=p_{k+1}+b_1p_k+b_2p_{k-1}+\cdots+b_kp_1=0 \]

于是

\[p_{k+1}=-\sum_{i=1}^kb_ip_{k-i+1} \]

\(O(k^2)\) 解出 \(b_i\),即可计算答案。

CF963E Circles of Waiting

\(f(x,y)\) 表示从 \((x,y)\) 出发,走到距离大于 \(R\) 的点的期望步数。

如果 \(x^2+y^2>R^2\)\(f(x,y)=0\)

\[f(x,y)=1+f(x-1,y)p_1+f(x,y-1)p_2+f(x+1,y)p_3+f(x,y+1)p_4 \]

暴力高斯消元时间复杂度为 \(O(n^6)\)

考虑使用主元法。

将纵坐标从上到下,横坐标从左到右依次编号,取每个纵坐标最左边的横坐标为主元。

\[f(x+1,y)=\frac{f(x,y)-f(x-1,y)p_1-f(x,y-1)p_2-f(x,y+1)p_4-1}{p_3} \]

可以达到 \(O(n^3)\)

P3211 [HNOI2011]XOR和路径

按位处理。

\(f(u)\) 表示从 \(u\) 出发到 \(n\),这一位的异或和为 \(1\) 的概率。

\[f(u)=\sum_{u\to v}\frac{[w=0]f(v)+[w=1](1-f(v))}{deg(u)} \]

注意判断自环,自环的边只能连一次。

CF895C Square Subsets

完全平方数只与质因子的奇偶有关,小于等于 \(70\) 的质数只有 \(19\) 个,因此可以把每个数分解质因数后用二进制表示。

两个数想成等价于异或,原问题等价于异或和为 \(0\) 的真子集数。

假设线性基插入的元素个数为 \(cnt\),那么答案为 \(2^{n-cnt}-1\)(线性基的基底异或一定不为 \(0\))。

P4869 albus就是要第一个出场

对于一个已经确定的线性基,新加入一个能被基底表示的数,会使得所有能被表示的数统一乘 \(2\)

于是问题就转化为查询一个数在线性基中的排名。

P5607 [Ynoi2013] 无力回天 NOI2017

很明显是线段树 + 线性基。

但线性基无法下传标记,于是考虑差分。

\(a_{i-1}\oplus b_i=a_i\),每次只需要支持单点修改即可。

可以发现 \(a_{l\rightarrow r}\) 组成的线性基与,\(a_l\)\(b_{l+1\rightarrow r}\) 组成的线性基相同(考虑 \(a_i\) 的定义来证明)。

于是这道题可以在 \(O(n\log n\log^2 V)\) 解决。

CF845G Shortest Path Problem?

图中的环可以任意添加,于是可以把所有环加入线性基中。

其实 \(1\)\(n\) 的路径也可以任意选择,因为如果存在一条更优的路径,它会与原路径成环,一定会被加入线性基中。

CF1299D Around the World

发现边权值只达到 \(31\),爆搜发现线性基的种类只有 \(374\)

考虑先将 \(1\) 连出去边删掉,可以得到很多连通块,沿用 CF845G 的方法,把每个连通块的环加入线性基中,如果存在一个环的权值不能加入线性基中,那么这个连通块一定不能与 \(1\) 相连。

因为不存在长度大于 \(3\) 的简单环,因此 \(1\) 向这些连通块要么连一条边,要么连两条边。

\(dp(i,j)\) 表示前 \(i\) 的连通块中,线性基为 \(j\) 的方案数,分类转移即可。

posted @ 2022-12-24 09:17  top_tree  阅读(69)  评论(0)    收藏  举报