[学习笔记]Cayley-Hilmiton
Cayley–Hamilton theorem - Wikipedia
其实不是理解很透彻,,,先写上
简而言之:
是一个知道递推式,快速求第n项的方法
k比较小的时候可以用矩阵乘法
k是2000,n是1e18呢?
思想:求出开始的k项的每一项对第n项的贡献
特征多项式,,
fibonacci:
f[n]=f[n-1]+f[n-2]
x^2=x+1
推广:
f[n]=af[n-1]+bf[n-2]
x^2=ax+b*1
再推广:
f[n]=a1f[n-1]+a2f[n-2]+...+akf[n-k]
x^k=a1x^(k-1)+...+ak
特征多项式就是左边移动过去:x^2-x-1=0
其实本质是:
x是转移矩阵。
必然有x^2-x-1=0成立
具体的证明以及用法
$B*A^n=F_n$
$B*A^{n-1}=F_{n-1}$
...
$B*A^{n-k}=F_{n-k}$
如果有:$F_n=\sum_{i=1}^k ai*F_{n-i}$
那么可以把第一个式子减去后面k个等式的乘上$a_i$的和得到:
$B*(A^n-a_{1}A^{n-1}-.....-a_{k}A^{n-k})=0$
必然有:$(A^n-a_{1}A^{n-1}-.....-a_{k}A^{n-k})=0$
不妨用x来代替A
$x^{k}-\sum_{i=0}^{k-1} a_0*x^{k-1-i}=0$
对于$x^n$,一定可以写成:$x^n=(x^{k}-\sum_{i=0}^{k-1} a_0*x^{k-1-i})*g(x)+r(x)$
可以得到:
$A^n=r(A)$
设$r(A)=\sum_{i=0}^{k-2} bi*A^{k-2-i}$
同时乘上初始矩阵$B$
$B*A^n=\sum_{i=0}^{k-2} bi*B*A^{k-2-i}$
关注后面的:$B*A^{k-2-i}$
两种处理方法:
$B*A^{k-2-i}$的最大下标的元素就是$F_{2*k-2-i}$,
我们需要提前推出$F_k \to F_{2*k-2}$然后每一个依次乘上对应的系数$b_i$即可(n要提前-=k)
或者,$B*A^{k-2-i}$的最小下标的元素就是$F_{k-2-i}$,然后每一个依次乘上对应的系数$b_i$即可(n就不用动了)
至于$r(x)$的求法
1.暴力多项式除法(n太大和暴力没有区别)
2.倍增+暴力多项式取mod
计算$x=T \space mod \space A$自乘得到:$x^2=T^2 \space mod \space A$,再暴力取模(由于A的首项是1,所以不用逆元O(k^2)即可)
类似快速幂一样乘到答案多项式里去
O(k^2logn)
3.暴力取模变成多项式除法O(klognlogk)
例题:
【BZOJ4161】
[学习笔记]Cayley-Hilmiton的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
- ucos实时操作系统学习笔记——任务间通信(消息)
ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...
随机推荐
- 20155216 Exp8 WEB基础实践
Exp8 WEB基础实践 实践内容 Apache环境配置 apache是kali下的web服务器,通过访问 ip地址+端口号+文件名称 打开对应的网页. 输入命令 vi /etc/apache2/po ...
- 20155339 Exp6 信息搜集与漏洞扫描
20155339 Exp6 信息搜集与漏洞扫描 实验后回答问题 (1)哪些组织负责DNS,IP的管理. 全球根服务器均由美国政府授权的ICANN统一管理,负责全球的域名根服务器.DNS和IP地址管理. ...
- django请求的生命周期
1. 概述 首先我们知道HTTP请求及服务端响应中传输的所有数据都是字符串. 在Django中,当我们访问一个的url时,会通过路由匹配进入相应的html网页中. Django的请求生命周期是指当用户 ...
- 设计模式 笔记 桥接模式 Bridge
//---------------------------15/04/15---------------------------- //Bridge 桥接模式----对象结构型模式 /* 1:意图:将 ...
- 记一次Java加密加签算法到php的坑
此文为本人原创首发于 http://www.35coder.com/convert_encryption_codes_to_php/. 写代码的经历中,总少不了与外部的程序对接,一旦有这样的事,往往周 ...
- 3dmax2020下载安装3dmax2020破解中文版下载安装
3dmax在室内设计.建筑设计领域是最专业的效果图制作软件,也是在游戏动画等领域中在场景方面最专业的软件,目前最新3dmax2020版本已出,我分享亲测好用的软件包,拿走不谢! 3dmax2020安装 ...
- LintCode——筛子求和
描述:扔n个骰子,向上面的数字之和为 S .给定 Given n,请列出所有可能的 S 值及其相应的概率. 样例:给定n=1,返回 [ [1, 0.17], [2, 0.17], [3, 0.17], ...
- Python进阶量化交易场外篇3——最大回撤评价策略风险
新年伊始,很荣幸笔者的<教你用 Python 进阶量化交易>专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外会陆续推出一些手记来辅助同学们学习 ...
- PAT甲题题解-1010. Radix (25)-二分搜索
题意:给出n1和n2,以及其中一个数的进制,问另一个数是多少进制的情况下,才会是两个数相等.不存在的话,则输出Impossible 这题思路很简单,但是要考虑的比较多,在简单题里面算是比较好的. 有两 ...
- PAT甲题题解-1013. Battle Over Cities (25)-求联通分支个数
题目就是求联通分支个数删除一个点,剩下联通分支个数为cnt,那么需要建立cnt-1边才能把这cnt个联通分支个数求出来怎么求联通分支个数呢可以用并查集,但并查集的话复杂度是O(m*logn*k)我这里 ...