矩阵树
行列式
定义一个矩阵 的行列式为:
其中 是枚举的所有排列, 是逆序对数
一些性质:
-
-
交换矩阵两行,行列式变号
-
每一行乘 ,行列式乘
-
= + ,用分配率证明
-
某两行一样的矩阵行列式为零,因为交换后取反,而本质相同,只能都是零
-
矩阵一行加上另一行的倍数行列式不变
-
伴随矩阵是代数余子式构成的矩阵的转置.
-
伴随矩阵等于逆矩阵乘行列式
因此可以通过矩阵求逆来得到所有的代数余子式
把一组数看成矩阵 为 ,求解行列式,由于只与奇偶性有关,那么计算式中的 可以忽略
去掉一个相当于是代数余子式,用逆矩阵来求即可
矩阵树定理
设 为邻接矩阵, 为度数矩阵(出边减入边加),矩阵 , 任意一个 阶主子式的行列式值为图中生成树的个数
对于有向图而言,所求是以 为根的生成树
若度数统计为入边和则为外向树,反之为内向树
证明不会
数据范围小到可以容斥,那么枚举商家集合容斥即可
好吧这其实是个诈骗题,矩阵树这个东西还是太复杂了,并没有什么好方法进行构造
那么考虑乱搞,因为生成树的个数时 级别的,那么可以视作随机的数
那么可以随机 个图,然后选取 个使得它们的乘积满足条件
这个 在折半后可以做到 ,之后这个概率就非常大了
考虑用生成函数来限定这个恰好 个
那么对于原树的边设为 ,求出的最终函数的每一项即为所求
考虑不用多项式的手段,而是转而用拉格朗日插值计算出前 个的矩阵树的值,用求系数的方式插出答案
其问题转化为要求所有生成树的边权之和
做法是这样的,将矩阵的每一个点都变成 的形式,初始化为 的形式
最后 项的系数就是答案
这样做的原因其实也很好理解,其实就是计算每一条边选择时的方案数 边权
那么一次项一定是某一个边权再乘上其它所有的方案得来的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效