[学习笔记]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 ...
随机推荐
- 2017-2018-2 20155224『网络对抗技术』Exp6:信息搜集与漏洞扫描
实践内容 各种搜索技巧的应用 DNS IP注册信息的查询 基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点 漏洞扫描:会扫,会看报告,会查漏洞说明,会修补漏洞 基本问题回答 哪些 ...
- MySQL优化:explain using temporary
什么时候会使用临时表:group/order没设计好的时候 1.order没用索引 2.order用了索引, 但不是和where相同的索引 3.order用了两个索引, 但不是联合索引 4.order ...
- [Luogu5048] [Ynoi2019模拟赛]Yuno loves sqrt technology III[分块]
题意 长为 \(n\) 的序列,询问区间众数,强制在线. \(n\leq 5\times 10^5\). 分析 考虑分块,暴力统计出整块到整块之间的众数次数. 然后答案还可能出现在两边的两个独立的块中 ...
- R实战 第九篇:数据标准化
数据标准化处理是数据分析的一项基础工作,不同评价指标往往具有不同的量纲,数据之间的差别可能很大,不进行处理会影响到数据分析的结果.为了消除指标之间的量纲和取值范围差异对数据分析结果的影响,需要对数据进 ...
- pt-online-schema-change的实现原理
pt-online-schema-change用于MySQL的在线DDL. 下面结合官方文档和general log来分析其实现原理. 测试表 mysql> show create table ...
- BugkuCTF 文件上传测试
前言 写了这么久的web题,算是把它基础部分都刷完了一遍,以下的几天将持续更新BugkuCTF WEB部分的题解,为了不影响阅读,所以每道题的题解都以单独一篇文章的形式发表,感谢大家一直以来的支持和理 ...
- python之GIL理解
GIL(Global Interpreter Lock) 全局解释器锁 python3中是假的多线程,它不是真正的并行,是利用了cpu上下文的切换而已.同一时间只能有一个线程使用共享数据,其它线程处于 ...
- Shell 基础 -- 输入、输出重定向
一.文件描述符 文件描述符是一个非负的整数,Linux 中每个运行中的程序(进程),都有一些与之关联的文件描述符,你可以使用文件描述符来访问打开的文件或设备.在标准 I/O 库中,与文件描述符对应的是 ...
- PAT-1010 Radix
1010 Radix (25 分) Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 1 ...
- es6箭头函数使用场景导致的一些问题
1. 今天在使用draggable组件时,监听dragmove事件时获取到的事件对象有一些异常, 代码如下 draggable.on('drag:move', (event) => { cons ...