Loading

矩阵

矩阵乘法

P6772 [NOI2020]美食家
题解

P6190 [NOI Online #1 入门组]魔法
首先答案是先做一次最短路,然后得到一个 \(\tt dis\) 数组,然后用 \(\tt dis\) 数组去让每一条边取反然后再跑一遍最短路。
把最短路看成 \(n\) 个矩阵的乘积,然后取反转移也可以看成矩阵。然后用矩阵快速幂就做完了

CF506E Mr. Kitayuta's Gift
这题十分巧妙。首先考虑一个 \(dp\) : \(dp_{i, l, r}\) 表示已经填了最终状态的前 \(i\) 位和后 \(i\) 位,原序列中 \([l, r]\) 这一段还没有填进去。
然后这个是 \(n^2m\) 的,不可通过。使用矩阵乘法可以 \(O(n^6 \log m)\)。考虑最终建出来的图可以拆成链,统计一下链上 \(s_l \neq s_r\) 的个数。然后这样子对于每一个个数处理可以做到 \(O(n^4 \log m)\)
最后可以把这张图压缩成 \(\frac{3}{2} n\) 个点,时间复杂度 \(O(n^3 \log m)\)

CF1368H2 Breadboard Capacity (hard version)
线段树维护动态 dp 维护模拟网络流,把 H1 的 \(dp\) 方程换成矩阵的形式,然后线段树维护一下两边翻转或不翻转后,得到的矩阵是什么即可。
代码有点恶心。

CF351C Jeff and Brackets
考虑到无论怎么做,我们可以保证栈中左括号数量 \(\le 20\)。然后维护左括号数量,矩阵转移即可。

CF780F Axel and Marston in Bitland
sb 倍增加矩阵,记录第一个是什么数字,长度为二的几次方即可。

CF593E Strange Calculation and Cats
sb 矩阵快速幂,记录一下每一个时刻在哪个位置的方案数,大力矩阵快速幂即可。

CF750E New Year and Old Subsequence
sb ddp, 只要记录一下在每一个位置的状态 (匹配状态) ,用线段树维护矩阵乘法即可。

CF107D Crime Management
sb 矩阵快速幂,对于每一个限制我们维护一下目前的模数,123 种状态,矩阵快速幂即可。

CF147B Smile House
还行?倍增记录一下从 \(u\) 经过 \(2^x\) 条边到 \(v\) 的最大权值。然后随便判断一下即可。

CF1149C Tree Generator™
发现答案一定是括号序列中的一段区间,前一半对答案贡献为正,后一半为负。这个可以 \(dp\)
用线段树维护矩阵乘法即可。

CF576D Flights for Regular Customers
如果我们知道了一个是否有边的初始状态,我们就可以走 \(n\) 次判断能不能走到终点。
至于初始状态,我们可以用 \(bitset\) 维护矩阵快速幂来做。

行列式

高斯消元。

CF167E Wizards and Bets
考虑路径可以相交,那么答案就是行列式计算即可。那么现在是不能相交,事实上相交的和不相交的答案抵消了,因此答案没有变化。

LGV 定理

一张有向无环图,\(x\) 起点到 \(x\) 终点的 不相交路径数量 等于两两之间连边的路径数量对应的行列式的值。

P6657 【模板】LGV 引理
模板题。

矩阵树定理

Proof:考虑先钦定一个根,然后把这个根去掉。
剩下的点要选父亲。首先先将这些点随意选个父亲。这样是错的,因为可能成环。考虑容斥,钦定一些点成环,钦定一个环就乘上 \(\rm -1\) 的容斥系数。
对于一个排列,一个位置连向自己看作是不钦定,连向其他位置看作钦定。一个偶环的贡献是 \(-1\)。然后求矩阵行列式即可。

一张图的生成树个树为 入度 矩阵减去邻接矩阵,去掉一行和一列的行列式(针对 外向树)。

SP104 HIGH - Highways
板子题。

P3317 [SDOI2014]重建
考虑一张图的一个生成树 \(\beta\) 合法的概率为 \(\prod\limits_{e \in \beta} f_i \sum\limits_{e \notin \beta} (1 - f_i) = \prod (1 - f_i) \prod\limits_{e \in \beta} \frac{f_i}{1 - f_i}\)
这东西可以直接矩阵树解决。

P4336 [SHOI2016]黑暗前的幻想乡
考虑容斥,让 \(E\) 为建筑公司集合,答案就是 \(\sum\limits_{S \in E} (-1)^{|E| - |S|} f(E)\)

P6624 [省选联考 2020 A 卷] 作业题
考虑莫反然后问题变成了求一些边的所有生成树的权值和。于是求的就是钦定一条边的生成树个树。
由于只钦定一条边,这个东西可以用把矩阵中间的数换成 一次函数:\(w_i x + 1\),最后矩阵树定理要求的是 \([x]\) 这一项的系数。

特征

https://www.luogu.com.cn/blog/zyxxs/solution-cf923e

posted @ 2020-10-13 21:42  zhoukangyang  阅读(18)  评论(0编辑  收藏  举报