简单递推公式转换矩阵求解
对于许多递推题目,由于数据范围太大直接循环写会爆掉,这时首先想到的就是矩阵优化,把递推式转换成01矩阵通过快速幂优化。
比如最简单的斐波纳挈,如果n非常大,循环递推肯定是不合适的,那么可以考虑下面的公式 (f[n],f[n-1])=(f[n-1],f[n-2])*A; 这里的A是一个01矩阵,此时的A={1,1,1,0} 2*2的矩阵, 可想而知 f[3] = A的n-2次幂*(f[2],f[1]); 形如斐波纳挈的递推公式转换矩阵都很简单, 顺便附上POJ3070的 斐波纳挈转矩阵快速幂的代码
#include<cstdio> #include<cstring> #include<iostream> #define MOD 10000 using namespace std;struct mac {int frob[2][2]; }pri,unit;mac power(mac x,mac y) {mac temp;for(int i=0;i<2;i++){for(int j=0;j<2;j++){temp.frob[i][j]=0;for(int k=0;k<2;k++){temp.frob[i][j]=(temp.frob[i][j]+x.frob[i][k]*y.frob[k][j])%MOD;}}}return temp; } void eachother(int n) {pri.frob[0][0]=pri.frob[0][1]=pri.frob[1][0]=1;pri.frob[1][1]=unit.frob[0][1]=unit.frob[1][0]=0;unit.frob[0][0]=unit.frob[1][1]=1;while(n){if(n&1){unit = power(unit,pri);}pri = power(pri,pri);n >>= 1;}printf("%d\n",unit.frob[0][1]); } int main() {int n;while(scanf("%d",&n)!=EOF){if(n==-1) break;if(n==0){printf("0\n");continue;}if(n==1||n==2){printf("1\n");continue;}eachother(n);}return 0; }
转载于:https://www.cnblogs.com/liboyan/p/4650612.html
简单递推公式转换矩阵求解相关推荐
- OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)
PS. 因为csdn博客文章长度有限制,本文有部分内容被截掉了. 在OpenCV中文站点的wiki上有可读性更好.而且是完整的版本号,欢迎浏览. OpenCV Wiki :<OpenCV 编程简 ...
- 【入门】(二)相机标定、矩阵求解、相机位姿势估计
目录 目录 一.相机模型.内参.外参,畸变以及相机标定 二.基本矩阵与对极约束 三.单应矩阵 四.相机姿势估计 一.相机模型.内参.外参,畸变以及相机标定 1.坐标系转换 (1)坐标系概念 世界坐标系 ...
- ORBSLAM中单应矩阵求解
ORBSLAM中单应矩阵求解 1. 单应矩阵求解 2.用DLT方法求解单应矩阵H 3. 三角化求深度 4. 使用RT三角化 1. 单应矩阵求解 /*** @brief 计算单应矩阵,假设场景为平面情况 ...
- OpenCV基础矩阵求解解析笔记
文章目录 1. 基础矩阵求解原理 1.1 基础矩阵推导 1.1.1 相机模型 1.1.2 对极几何 1.1.3 基础矩阵性质 1.2 7 7 7点法求解基础矩阵 1.3 8 8 8点法求解基础矩阵 1 ...
- 空间坐标系以及空间两三维坐标系转换矩阵解释
空间坐标系以及空间两三维坐标系转换矩阵解释 因为工作的原因,需要进行不同坐标系的一个转换,在查阅了众多的网页之后,发现有用的没几个,而且众多都是抄的同一篇文章,而且都是罗列以下旋转的方式,几乎没有解释 ...
- 转换矩阵、平移矩阵、旋转矩阵关系以及python实现旋转矩阵、四元数、欧拉角之间转换
文章目录 1. 转换矩阵.平移矩阵.旋转矩阵之间的关系 2. 缩放变换.平移变换和旋转变换 2. python实现旋转矩阵.四元数.欧拉角互相转化 由于在平时总是或多或少的遇到平移旋转的问题,每次都是 ...
- 定位(1):两点对+两旋转角度计算转换矩阵
定位(1):两点对+两旋转角度计算转换矩阵 已知: 坐标系A和坐标系B(全站仪坐标系/大地坐标系(竖直方向向上))对应的两个点的坐标. 点1在A坐标系下的坐标A1(X1,Y1,Z1); 点1在B坐标系 ...
- Transforms CTM, 转换矩阵
Quartz转换实现的原理:Quartz把绘图分成两个部分, 用户空间,即和设备无关, 设备空间, 用户空间和设备空间中间存在一个转换矩阵 : CTM 本章实质是讲解CTM Quartz提供的3大功能 ...
- 单应性矩阵求解函数findHomography()
OPENCV官方地址:Camera Calibration and 3D Reconstruction 上面这个地址是OPENCV标定和三维重建集合的函数说明,包括标定原理,过程和工具的使用,想要使用 ...
最新文章
- Lambda表达式关于like问题(未解决)
- Ie html button消失,input 按钮在IE下兼容问题
- LeetCode第121题 买卖股票的最佳时机
- ITK:使用GMM EM进行分布式采样
- 经典C语言程序100例之三九
- jquery 根据class名 赋值_jQuery简单用法!!!
- 基于Nginx的https服务
- Spring注解中@Configuration和@Configurable的区别
- 为什么我加了过滤器然后就登不进去了_布隆过滤器过时了,未来属于布谷鸟过滤器?...
- mysql导入社工库文件_社工库-数据表结构设计和数据导入
- Network 20Q--Q2 How does Google sell ad spaces?
- linux tcp文件分包_畅谈linux下TCP(下)
- django migrate无效的解决方法
- 微软 补丁 服务器,2003到2016各版服务器操作系统ms17-010补丁直链地址
- 小程序 长按转发_微信小程序实现限制用户转发功能的实例代码
- 【UE5】AI随机漫游蓝图两种实现方法(角色蓝图、行为树)
- 数据建模 Database Modeling:概念 (Conceptual) vs 逻辑 (Logical) vs 物理数据 (Physical) 模型
- 1-5分钟上手自动化测试——Airtest+Poco快速上手
- 使用Apache的Proxy模块实现对被代理网站的访问
- The application of backtracking
热门文章
- 动态添加XtraTabControl
- python 查看 .npy文件 和 .pkl 文件的方法
- Centos7安装Python3.7
- 手机壳鸿蒙,手机壳黑榜发布 真相太惊人!
- linux基础-1.1USB设备(USB1.0以上)连接使用
- malloc、calloc、realloc和free
- 计算机职称在线考试报名系统,2020年计算机职称考试网上如何报名
- 编译Linux内核的详细过程
- Apache Camel简化SOA实施进程
- JAVA学习:maven开发环境快速搭建How to download J2EE API (javaee.jar) from Maven