day8

NOI2012 随机数生成器

矩阵快速幂。

NOI2013 矩阵游戏

矩阵快速幂。

CQOI2013 新 Nim 游戏

先手保留的集合要线性无关,建个线性基。

CF895C Square Subsets

对于每个质数及其次数考虑,相当于取出来的次数和 \(\bmod\text{ }2\) 意义下为 \(0\)

相当于次数做 \(\oplus\) 啦,然后因为总共 \(19\) 个质数,所以建一个 \(19\) 大小的线性基来算就好。

CF1163E Magical Permutation

不妨令 \(p_0=0\),因为 \(q_i=p_i\oplus p_{i-1}\)\(p_i=\large\oplus_{j<i}{q_j}\),而 \(q_i\in\mathbf{S}\),所以 \(p_i\) 可以被 \(\mathbf{S}\) 表示出来。

也就是说 \(\mathbf{S}\) 有一个子集持有大小为 \(x\) 的线性基,然后我们可以拿着这个线性基来构造。

给每位分配一个二进制数,相邻两个数只有一位不同,这就是个格雷码。

CF348D Turtles

点不交 DAG,使 LGV。方案数可 dp。

P6657 【模板】LGV 引理

它都叫“【模板】LGV 引理”了……

有向图哈密顿路

记录路径显然会炸,然而 LGV 引理有一个用途是判断不交路径。

给每个点赋一个随机的 \(k\) 维向量 \(\vec{v_i}\),如果选的点构成的矩阵 \(\begin{bmatrix}v_{a_1} \\v_{a_2} \\\vdots \\v_{a_k} \\\end{bmatrix}\),其行列式为 \(0\),则不合法。

按照行列式的定义写个状压 dp 维护一下即可。

NOI2021 密码箱

神秘,将 \(f\) 展开可以变成连分数,然后对于连分数有 \(\dfrac{1}{v+\frac{a}{b}}=\dfrac{b}{a+vb}\)

可以维护分子分母的二维向量 \(\begin{bmatrix}a\\ b\end{bmatrix}\),然后会有一个 \(\begin{bmatrix}0,1\\ 1,v\end{bmatrix}\) 左乘上它。

只需维护 \(\prod\begin{bmatrix}0,1\\ 1,a_i\end{bmatrix}\) 即可。

对于 W 操作,有 \(\begin{bmatrix}0,1\\ 1,v+1\end{bmatrix}=\begin{bmatrix}0,1\\ 1,v\end{bmatrix}\begin{bmatrix}1,1\\ 0,1\end{bmatrix}\)

对于 E 操作,讨论后发现都等价于右乘上 \(\begin{bmatrix}0,-1\\ 1,2\end{bmatrix}\)

剩下的是数据结构板子。

CF1100F Ivan and Burgers

两只log,两只log,跑得快,跑得快。

一只是个分治,一只是线性基,真的快,真的快

——神秘民谣

考虑建线性基的时候,每次插入时尽量替换掉旧的,保留更新的元素,并记录其编号。

那么每个前缀的线性基都是当前尽量新的线性基,更有可能落在 \(\ge l\) 的区间。

那么把这时的线性基里面 \(\ge l\) 的编号拿出来跑判定就好。

这个叫 前缀线性基/时间戳线性基。

PA 2021 Fiolki 2

仍然用 LGV 引理检验不交路径。

考虑 \(f(l,r)=x\),那就是能找出 \(x\) 个线性无关的向量。

找线性无关,建线性基!

用上一个题的方法判定即可。

SNCPC2024 最大流

点不交变成了边不交,点边转化,入边连向出边。

\(i\) 点的答案相当于 \(i\) 点入边构成的线性基大小。

然而建边是 \(\mathcal{O}(m^2)\) 的。

注意到秩是 \(\mathcal{O}(k)\) 的,也就是边可以用 \(k\) 个向量线性组合得来。

考虑把入边建成一个线性基,出边是入边的线性组合,那对着这个线性基随机组合即可。

这样就直接跑了,图也不用建了。

posted @ 2025-08-18 21:04  LQ636721  阅读(5)  评论(0)    收藏  举报