关于矩阵快速幂的用法总结QwQ
umm首先矩阵快速幂的板子就不港了比较简单的还是?就结合二进制地理解一下就好了,代码可以翻蒟蒻の考前续命这里面放了我记得?
主要是说下应用趴?
目前我会的似乎就是个矩阵加速?简单来说就是个给一个递推式(以板子为例说下?那么递推式就是f[x]=f[x-3]+f[x-1])给一个k要快速地求出f(k)
umm其实这个的话就是构造一个矩阵,然后套个矩阵快速幂就好了鸭
矩乘当然是板子的了,主要问题在于构造矩阵,这里港下我肝了一个下午的理解qwq
定义
首先我们要理解矩阵?它的作用在哪儿?
umm这个点的话我觉得结合方程组和图像应该会好理解一些?然而我懒得画图也懒得举例辽QAQ所以放一个我学习矩阵的网址这里我觉得解释得真的贼好QwQ特别便于理解QwQ
矩阵加速线性递推式
然后矩阵最重要的应用应该就是矩阵加速?然后矩阵加速唯一一个有难度的就在于怎么构造矩阵
那就以f[i]=f[i-1]+f[i-3]为例港下
很容易能发现我们是从f[n-1],f[n-2],f[n-3]推出f[n],f[n-1],f[n-2],那我们就可以做出这样一个东西
f[n-1] f[n]
f[n-2] × T = f[n-1]
f[n-3] f[n-2]
然后!如果我们能求出T,就可以矩阵快速幂地求出来辣!
然后思考一下可以得到f[]之间的关系
f[ n ]=1*f[n-1]+0*f[n-2]+1*f[n-3]
f[n-1]=1*f[n-1]+0*f[n-2]+0*f[n-3]
f[n-2]=0*f[n-1]+1*f[n-2]+0*f[n-3]
就能构造出
1,0,1
1,0,0
0,1,0然后快速幂走一波,over
然后还有一个小细节是关于最开始的那个矩阵?
那个我不会构造,,,,所以我一直是大概性地猜一把然后多套几个数据然后就大概套出来了,,,关于这个我还没有总结出来呢QAQ等多打几个模板再总结下趴QAQ
然后之前考试的时候碰到了类似的题目,tr神仙总结了一下QwQ
首先我们要知道,对于矩阵来说,尽量是越小越好的
举个eg,2×2的矩阵,和3×3的矩阵,相差就会有3倍的常数
所以矩阵能小尽量小
然后关于上面那个T的最小size,先写个一般式:f[i]=A*f[i-1]+B*f[i-2]+C
首先想到因为矩阵乘法都是乘法,肯定搞不出加法的,所以状态要设成这样:
f[i-1] f[i]
f[i-2] × T = f[i-1]
C C
然后就看
f[i]=A*f[i-1]+B*f[i-2]+1*C
f[i-1]=1*f[i-1]+0*f[i-2]+0*C
C=0*f[i-1]+0*f[i-2]+1*C
所以构出来就是这样儿的
A,B,1
1,0,0
0,0,1
然后如果再一般一点儿,变成这样呢:f[i]=A*f[i-d1]+B*f[i-d2]+C
也是能解决的,懒得画图辣,写一个结论
f[i]=A1*f[i-1]+A2*f[i-2]+A3*f[i-3]+...
构造出来的T就是
A1,A2,A3, ...
1 , 0, 0, ...
0 , 1, 0, ...
...
然后如果还有个常数就另外加个常数就欧克,看上面"f[i]=A*f[i-1]+B*f[i-2]+C"这个的应该就欧克辣
以上就是,矩阵快速幂优化线性递推式的方法
就是矩阵加速的最基础应用,,,
矩阵光速幂
瞎取的名字,,,不知道484叫这个玩意儿,,,
还麻油落实,,,
放个例题:块速递推
拓展1 矩阵套矩阵
咕咕咕,,,?
拓展2 经典递推式
有好几个加法乘法的经典式子
如果明天能逃过来就写QAQ
然后最后放几个基本的题目就溜辣!
[X] 斐波那契数列
关于矩阵快速幂的用法总结QwQ的更多相关文章
- [技术]浅谈OI中矩阵快速幂的用法
前言 矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中,矩阵的运算是数值分析领域的重要问题. 基本介绍 (该部分为入门向,非入门选手可以跳过) 由 m行n列元素排列成的矩形阵列.矩阵里的 ...
- HDU6470 ()矩阵快速幂
http://acm.hdu.edu.cn/showproblem.php?pid=6470 题意:f[n] = f[n-1] + f[n-2]*2 + n^3; f[1] =1 ; f[2] = 2 ...
- 【矩阵快速幂】【杭电OJ1757】
http://acm.hdu.edu.cn/showproblem.php?pid=1757 A Simple Math Problem Time Limit: 3000/1000 MS (Java/ ...
- 【BZOJ】2553: [BeiJing2011]禁忌 AC自动机+期望+矩阵快速幂
[题意]给定n个禁忌字符串和字符集大小alphabet,保证所有字符在集合内.一个字符串的禁忌伤害定义为分割能匹配到最多的禁忌字符串数量(一个可以匹配多次),求由字符集构成的长度为Len的字符串的期望 ...
- Luogu P4159 [SCOI2009]迷路 矩阵快速幂+精巧转化
大致就是矩阵快速幂吧.. 这个时候会发现这些边权$\le 9$,然后瞬间想到上回一道题:是不是可以建一堆转移矩阵再建一个$lcm(1,2,3,4,5,6,7,8,9)$的矩阵?...后来发现十分的慢q ...
- HDU 2256Problem of Precision(矩阵快速幂)
题意 求$(\sqrt{2} + \sqrt{3})^{2n} \pmod {1024}$ $n \leqslant 10^9$ Sol 看到题解的第一感受:这玩意儿也能矩阵快速幂??? 是的,它能q ...
- 矩阵快速幂/矩阵加速线性数列 By cellur925
讲快速幂的时候就提到矩阵快速幂了啊,知道是个好东西,但是因为当时太蒟(现在依然)没听懂.现在把它补上. 一.矩阵快速幂 首先我们来说说矩阵.在计算机中,矩阵通常都是用二维数组来存的.矩阵加减法比较简单 ...
- 矩阵快速幂 hud 1575 Tr A 模板 *
Tr A Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 1757 A Simple Math Problem (矩阵快速幂)
Description Lele now is thinking about a simple function f(x). If x < 10 f(x) = x. If x >= 10 ...
随机推荐
- 深入理解Linux内存分配
深入理解Linux内存分配 为了写一个用户层程序,你也许会声明一个全局变量,这个全局变量可能是一个int类型也可能是一个数组,而声明之后你有可能会先初始化它,也有可能放在之后用到它的时候再初始化.除此 ...
- Spark源码分析系列(目录)
记录自己学习研究 Spark 的探索过程,为后续总结奠定基础. 本文代码研究以 Spark 2.3.0 源代码为基准,如果看本文,请阅读时,下载对应的 Spark 版本. 图1 伯克利的数据分析软件栈 ...
- TF常用知识
命名空间及变量共享 # coding=utf-8 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt; ...
- 一次xxoo提权
数据库root权限.然并卵. 看了一下phpinfo得知是mysql 5.0 的 然后想要通过udf之类的提权一波,结果一执行sql语句就被狗拦截了. 然而数据库这条路是GG了 OS 名称: Micr ...
- 分布式任务&分布式锁
目前系统中存在批量审批.批量授权等各个操作,批量操作中可能因为处理机器.线程不同,造成刷新缓存丢失授权等信息,如批量审批同一用户权限多个权限申请后,流程平台并发的发送多个http请求到acl不同服务器 ...
- Python中的三元运算符
Python中的三元运算符 对于如下需求: if var1>1 : goal = "执行表达式1" else: goal = "执行表达式2" 1.在其他 ...
- Laravel 执行流程(一)之自动加载
定位 从 public/index.php 定位到 bootstrap/autoload.php 从 bootstrap/autoload.php 定位到 vendor/autoload.php 从 ...
- 接口和多态都为JAVA技术的核心。
类必须实现接口中的方法,否则其为一抽象类. 实现中接口和类相同. 接口中可不写public,但在子类中实现接口的过程中public不可省. (如果剩去public则在编译的时候提示出错:对象无法从 ...
- 使用Pip在离线环境安装Python依赖库
一.安装多个包 1.有网的服务器 1.生成requirement.txt文件 pip freeze >/tmp/wheel_pip/requirements.txt 这个命令会把当前环境下面的p ...
- Oracle误删除数据的恢复方法(转)
来源:原创网站北京北亚数据恢复中心,转载须注明出处. 学习数据库时,我们只是以学习的态度,考虑如何使用数据库命令语句,并未想过工作中,如果误操作一下,都可能导致无可挽回的损失.当我在工作中真正遇到这些 ...