基本矩阵/消元复习
模板有标记
P3390【矩阵快速幂】
【记录】
P6772
拆点, 把每个点 x 拆成几个形如 “还有 k 秒到达点 x” 的点, 就可以用矩阵表示转移了。
由于中间要插入几次美食节, 所以把转移矩阵预处理出来, 到时候直接用。
【记录】
Tabsize = 1 配合高挑的字体可以获得超神的代码观感。
P5303
首先可以发现必然是一个完整的 \(2\times K\quad (K\ge 3)\) 的长条的两端包容了那两个 \(1\times1\) 的格子, 否则可以证明不能完整地填完 \(2\times N\) 的空间。
且如果 \(K\) 是奇数, 那么 \(1\times1\) 的格子异行,反之同行。
设 \(f_i\) 表示 \(N = i\) 时的答案, \(g_i\) 表示 \(2\times i\) 的空间只用 \(1\times2\) 的格子覆盖的答案, \(\hat g_i\) 表示 \(\sum\limits_{0\le j\le i} g_j\), 那么有:
\(g\) 实际上就是斐波那契数列, \(g_2=2\)。
故有结论:\(\hat g_i = g_{i+2} - 1\)。
所以有:
【记录】
P3389【高斯消元】
朴素写消元代码太难看, 把矩阵的初等变换写成函数会好看许多。
【记录】
P2455【高斯消元(判无解)】
相比模板增加了判无解的情况。
用高斯-约旦消元。
【记录】
P4783【矩阵求逆】
由于矩阵的初等变换可以表示成矩阵乘法的形式, 所以把一个矩阵用矩阵初等变换变成单位矩阵,就相当于给它乘上它的逆矩阵。
把这些变换无损施加到另一个单位矩阵上,就可以得到这个矩阵的逆矩阵。
【记录】
P4035
设中点为 \(p\), 有某个在球面上的点 \(x\), 球的半径为 \(R\),那么:
把 \((x_i-p_i)^2\) 拆开得到 \(x_i^2 + p_i^2 - 2x_ip_i\)。
由于有 \(n+1\) 个球面上的点, 所以上面那个等式也有 \(n+1\) 个, 把前 \(n\) 个等式都减去第 \(n+1\) 个等式, 就得到:
然后就可以高斯消元了。
光解方程还是推荐高斯-约旦消元。
【记录】