ZROI 19.07.29 线性代数入门/wq

1.高斯消元

在模意义下依然有效,对主元求逆即可。

甚至可以模合数,需要对两个方程辗转相除,复杂度\(O(n^3\log p)\)。

辗转相除法只要能定义带余除法就有效。


  • 逆矩阵:对于矩阵\(A\),定义逆矩阵\(A^{-1}\)为满足\(A\cdot A^{-1}=A^{-1}\cdot A=e\)的矩阵。

求逆矩阵可以高斯消元。设有\(A\cdot A^{-1}=e\)的形式,把\(A\)消元成单位矩阵的过程中,对方程右侧进行同样的操作。

应用:设有方程\(A\cdot x=b\)(大写字母为矩阵,小写字母为向量),对于不同的\(b\)多次求解,可以转化为\(x=A^{-1}\cdot A \cdot x=A^{-1}\cdot b\)的形式,避免每次高斯消元。

  • 例题

题意:\(n\)个点的图,有\(k\)个关键点,对每对关键点\((i,j)\),求出从\(i\)出发随机游走,遇到的第一个关键点是\(j\)的概率。

Sol:

枚举终点\(k\),设\(f_i\)表示从\(i\)出发,走到的第一个关键点是\(k\)的概率。

对每个关键点设一个只进不出的虚点\(i'\),只有当前枚举的终点的\(f_{k'}=1\),其余为\(0\)。

然后发现每次高斯消元的不同点只有常数项,那么把常数项看作一个向量,每一维代表终点为\(k\)时该行的对应系数。这样直接消元就行了。


  • 行列式

一个结论:设有两个矩阵\(A,B\),则\(det(A\cdot B)=det(A)det(B)\)。

算三角形面积常用的叉积,本质是一个行列式。

可以扩展到\(d\)维空间,用行列式计算体积。

另一个结论:设有\(d\)个变量,均满足\(x_i \leq 0\),且\(\sum x_i\leq s\),点\((x_1,x_2,…,x_d)\)构成的集合的体积\(=\frac{S^d}{d!}\)。(相当于\(d\)个只有一维是\(S\)的向量的积的行列式)

  • 例题

题意:给\(n-1\)维空间下\(n+1\)个点,保证每个点的每一维坐标\(\in \{0,1\}\),求凸包体积。

Sol:

首先题意保证了每个点都不会在凸包的内部。

如果只有\(n\)个点,可以直接解行列式求体积。

现在转化到\(n+1\)个点,发现把每个大小为\(n\)的点集的凸包体积求和后,每个点被算了两次。

证明?咕咕咕。

注意由于叉积有方向,最后要取绝对值,计算的时候不能取模,需要求出精确值。


  • 矩阵树定理

构造:主对角线为每个点的度数,其余的位置有边则为\(-1\),否则为\(0\)。去掉头可以吃一行一列后求行列式即为生成树个数。

证明?咕咕咕。

有向图的有根树形图计数:令\(g_{i,i}\)为\(i\)的入度,\(g_{i,j}\)为\(i\)到\(j\)的边数的相反数,则以\(i\)为根的图个数即为去掉第\(i\)行第\(i\)列的行列式。

推论(BEST定理):\(n\)个点有向图,其欧拉回路的个数为以任意一点为根的树形图个数\(\times \sum (dgr_i-1)!\)。

证明?咕咕咕。

  • 例题:

题意:\(n\)个点,\(\{n-1,n\}\)条边的图,每条边重复\(t_i\)次,求欧拉回路个数。\(n, t_i \leq 1000\)。

Sol:

发现对每条边定向之后就可以用BEST定理算出欧拉回路个数。

先考虑\(n-1\)条边的图,显然每条边两个方向都是\(\frac{t_i}{2}\)次,随便定向之后用BEST定理即可。

扩展到\(n\)条边之后,对于森林部分是相同的解法,主要问题在于环上的边
方向不确定。但是发现枚举任意两个点之间各方向边数,即可\(O(n)\)推出环上其他点之间边数。

树形图个数可以手算,因为一定是环上某个位置切断,维护两个方向的前缀积即可,复杂度\(O(nt)\)。


  • 带状矩阵

定义:所有非\(0\)元素都在主对角线周围不超过\(d\)的距离内。

高斯消元时,每次只需要用长为\(d\)的向量消\(d\)行,复杂度\(O(nd^2)\)。

换主元的时候不能向下换一行,否则会破坏性质。

可以向右找一列换(相当于交换了两个变量顺序)。

用途:网格图随机游走等。

  • 例题:

一开始在\((0,0)\),每次随机一个方向走(四个方向概率可能不同),问距原点欧几里得距离超过\(R\)的期望步数。\(R \leq 50\)。

Sol:

很板。把需要的点都拉出来,拍扁之后就是带状矩阵,直接解,复杂度\(O(R^4)\)。


  • 主元法

对于很多网格问题,发现如果确定一行(或一列),那么整个网格的状态都可以递推出来。

那么把第一行的状态设为未知数,可以在\(O(n^2m)\)的时间内把每个格子的状态表示为第一行状态的线性组合。在最后一行往往可以列出方程,高斯消元即可。

对于上面的例题,可以把每一行最左边的点状态设为未知数,在最右边列出方程(因为再往右都是\(0\)),可以做到\(O(R^3)\)。

突然发现dls讲了一个半小时的高斯消元

2.线性空间

线性空间定义在数域上,满足对加减法和数乘是封闭的。(虽然并没有什么用)

基的定义跟数学上那一套没啥区别,详情请参阅必修四

模\(p\)意义下,如果维数是\(d\),那么共有\(p^d\)个元素(大概可以理解为一个\(d\)维向量)。

  • 例题(1)

题意:一个序列,支持末尾加数,询问区间中若干数xor最大值。\(n, q \leq 5e5, a_i \leq 2^{30}-1\)。

Sol:

考虑离线,扫描线维护一个线性基。线性基内每个元素维护一个加入时间(因为是扫描线,所以其实就是位置),每次加入新元素的时候,如果某个位置已有元素,则保留位置较右的那个,另一个递归下去。

每次询问的时候只需要找出加入时间大于左端点的元素即可。(跟山东省集的某道题很像)

  • 例题(2)

有一个\(n\times m\)的矩阵,要求选若干个数,使每行每列均有奇数个,且乘积为完全平方数,求方案数。\(n,m \leq 20, a_{i,j}\leq 10^9\)。

对每行、每列和每个质因子列异或方程组,解出自由元个数即可。


  • 伴随矩阵

定义:设矩阵\(adj(A)\),使得\(adj(A)_{i,j}=c_{j,i}\),即矩阵\(A\)去掉第\(j\)行\(i\)列的代数余子式。

性质:\(A\cdot adj(A)=adj(A)\cdot A=det(A)\cdot I\)

证明:掉线了,咕咕咕。

上面那个性质的作用?大概是可以通过矩阵求逆算伴随矩阵……

不可逆咋办?能做,但是我又掉线了……


  • Tutte Matrix

黑科技,比带花树靠(hao)谱(xie)多了。

给任意无向图\(G\)的每条边赋一个独一无二的权值\(x_{u,v}\),不存在则为\(0\),定义矩阵\(A\)的Tutte Matrix为矩阵\(B\),则\(B_{i,j}=x_{i,j}\cdot (-1)^{[i>j]}\)。

\(G\)有完美匹配,当且仅当\(det(B)\not=0\)。

为什么?不知道。

\(B^{-1}~_{i,j}\not=0\)当且仅当\(G-(i,j)\)有完美匹配。

为什么?不知道。

能干什么?可以处理一些相关的计数问题,大概。

\(G\)的最大匹配\(=\frac{rank(B)}{2}\)。

为什么?不知道。



少女掉线中……


3.特征多项式

定义到处都有就不抄了

  • 矩阵对角化:

设\(A\)的特征向量为\(\{x_1,x_2,…x_n\}\),对应的特征值为\(\{\lambda_1,\lambda_2,…,\lambda_n \}\),矩阵\(P=[x_1,x_2,…,x_n]\),对角矩阵\(D=\{\lambda_1,\lambda_2,…,\lambda_n \}\),则\(A\cdot P=P\cdot D\)。

用处:\(A=P\cdot D \cdot P^{-1}\),则\(A^k=P\cdot D^k \cdot P^{-1}\),然后对角矩阵的\(k\)次很好算……

然而局限性很大,基本只能手推。

dls推了个题,我掉线了。


  • 哈密尔顿-凯莱定理:

把一个矩阵代入到它的特征多项式的方程里是成立的。

然后就又掉线了。

反正这东西唯一的作用就是\(O(k\log k\log n)\)内解决\(k\)阶线性递推,还是左转洛谷模板区吧(

原文地址:https://www.cnblogs.com/suwakow/p/11375063.html

时间: 2024-11-29 09:42:49

ZROI 19.07.29 线性代数入门/wq的相关文章

ZROI 19.07.28 序列数据结构/jk

写在前面 dls:"我不会数据结构,但是APIO的数据结构场我写了,还是蛮简单的." T1 CF643G Sol: 有一个\(O(n\log^2n)\)的做法:假设将区间排好序,取六等分点,则答案一定覆盖了若干点,求区间第\(k\)大即可. 然而会TLE 定义绝对众数为区间中出现超过一半的数. 有一个经典的做法求绝对众数,然而它要在保证有解的时候才保证正确性. 维护当前答案和出现次数,遇到相同则\(+1\),不同则\(-1\),降为\(-1\)的时候就把当前解替换. 显然如果有解的话,

ZROI 19.07.31 AB班ACM

写在前面:非常感谢cjc和djh两位神仙带我,非常感谢他们给了我一次躺赢的机会. 虽然我被硬点成了代码手,但我写的基本每次都有一堆罚时.然而djh爷全部1A,tql. 题目按照一血时间升序,大致符合难度顺序. A - 10^N+7 中国剩余定理板子.由于我太菜了忘记怎么crt写了,所以码了很长时间. 有个邪道做法,由于只有三个模数,且只有第三个很大.可以枚举答案是第三个模数的多少倍,只需枚举\(17\times 107\)次. B - Coins djh爷打了个表发现\(n\geq 14\)的时

ZROI 19.07.28 组合计数/lb

T1 题意:\(n\)个变量,\(0 \leq x_i \leq c_i\),求\(\sum x_i = A\)方案数.\(n \leq 32\). Sol: \(n \leq 10\)的时候容斥很水,然而生成函数掉线了. \(n \leq 32\)的时候,dls:"显然Meet in Middle."然后我又掉线了 全世界就我不会生成函数 T2 题意:求\(0\)到\(2n-1\)的排列\(p\)的个数,使得对于任意的\(i\),\(n^2 \leq i^2+p_i^2 \leq 4

ZROI 19.08.03 DP入门

\(n\)个点,要求连一棵树,设点\(i\)的度数为\(d_i\),则其贡献为\(f(d_i)\mod 59393\),其中\(f(x)\)是一个\(k\)次多项式.最大化总贡献.\(n\leq 3000, k\leq 10, a_i\leq 50\). 对于任意一种度数序列,都可以生成一棵对应的树. 每个点度数\(\geq 1\),\(-1\)后等于\(n\)个点分\(n-2\)个度数. \(O(n^3)\)dp:\(f_{i,j}\)表示前\(i\)个点,度数和为\(j\)的最优解,转移的时

ZROI 19.07.30 简单字符串/ll

写在前面:今天下午药丸--不会字符串,全程掉线/ll 给出字符串\(S\),\(q\)次询问,每次给出\(a,b,c,d\),询问\(S[a,b]\)的所有子串和\(S[c,d]\)最长公共前缀的最大值.\(|S|,q \leq 10^5\). 取反建个SAM,每次二分答案.如果存在,合法串的右端点一定在\([a+len-1,b]\),建个主席树维护一下这些后缀在不在对应串的子树里就可以. 有一个字符串\(S\),初始为空.\(m\)次操作,每次操作在第\(x_i\)次操作之后的字符串后面加上一

Android 4.4 KitKat升级率已经接近18%(2014-07-09 07:29)

腾讯数码讯(编 译:张秀梅)按照惯例, 每个月的第一个星期的星期一谷歌都会发布最新一期Android版本分布图.从去年十月末谷歌发布Android 4.4 KitKat以来,截止到目前为止Android 4.4 KitKat的升级率以及占到了所有Android设备的18%份额,增长势头非常凶猛. 在 最新一个月的Android版本分布图中一个显著的特征就是除了Android 4.4 KitKat在保持快速持续得增长外,其他的Android在占有率上都有不同程度的下降.Android 4.4 Ki

ZROI 19.08.07模拟赛

传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. "正睿从来没有保证,模拟赛的题目必须原创." "文案不是我写的,有问题找喵老师去."--蔡老师 A R爷再次翻车,搞出来了一道六年前的CF题. \(100pts:\) 然而不是原题也很简单,斜率优化板子,单调队列搞一下就完事了. 也可以wqs二分,复杂度可以做到\(O(m\log m)\),\(与\)p\(无关.所以R爷差点把\)p$出到\(10^5\). B 本题乱搞做法非常多,所以R爷动用了权限来

19.1.29 [LeetCode 20] Valid Parentheses

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. An input string is valid if: Open brackets must be closed by the same type of brackets. Open brackets must be closed in the correct

JavaEE Tutorials (19) - Web应用安全入门

19.1Web应用安全概述29519.2保护Web应用安全296 19.2.1指定安全约束297 19.2.2指定认证机制300 19.2.3在部署描述文件中指定认证机制302 19.2.4声明安全角色30319.3Web应用使用编程式安全304 19.3.1通过编程方式认证用户304 19.3.2通过编程方式检查调用者身份306 19.3.3编程式安全的示例代码306 19.3.4声明和链接角色引用30819.4示例:保护Web应用安全309 19.4.1设置系统来运行安全示例309 19.4