快速幂杂谈
总觉得快速幂挺深刻的
观前提示
作者很菜, 只是一个普通的中学生
难免有不严谨的地方, 轻喷
普通快速幂
1 | i64 ksm (i64 a, i64 b, i64 mod) { |
这是一个非常朴素的快速幂
记
由于
又因为存在递推式
所以她可以在
但快速幂真的只能求
那也没必要写这篇文章了对不对
(广义) 快速幂
事实上, 任何幺半群上的运算的幂都可以使用快速幂计算。
形式化地, 我们定义某幺半群上有运算
根据定义, 这个幺半群上存在单位元
并且由于
但这还只是抽象代数层面的解释。
具体地, 除了乘法, 还有什么样的运算具有结合律呢?
加法
显然
这便是我们常说的龟速乘
应用
应用并不十分广泛, 主要用于带模乘法会爆 long long 的时候
矩阵乘法
根据 感性理解 线性代数知识, 我们知道矩阵乘法具有结合律
应用
定长路径计数
给定一个
这类题目有非常鲜明的特征,
一般来说
但是
做法并不困难
设邻接矩阵为
容易考虑一个 dp 来证明这个做法的正确性
定长最短路
求解
首先引入广义矩阵乘法
我们有两个二元运算
那么对于矩阵
我们对邻接矩阵
则
好像这个做法还有一个名字是倍增 floyd
加速递推
这个算是非常常见了
感性的来说,矩阵快速幂可以加速 简单重复 的递推
所以在看到严重的数量级不平衡时(如
卷积
首先给出两个向量的
对于两个向量
应用
她可以优化 dp
- Title: 快速幂杂谈
- Author: rainbow-auto
- Created at : 2024-08-26 22:06:28
- Updated at : 2025-01-17 18:44:02
- Link: https://rainbow-auto.github.io/2024/08/26/快速幂杂谈/
- License: This work is licensed under CC BY-NC-SA 4.0.