对于许多递推题目,由于数据范围太大直接循环写会爆掉,这时首先想到的就是矩阵优化,把递推式转换成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

简单递推公式转换矩阵求解相关推荐

  1. OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)

    PS. 因为csdn博客文章长度有限制,本文有部分内容被截掉了. 在OpenCV中文站点的wiki上有可读性更好.而且是完整的版本号,欢迎浏览. OpenCV Wiki :<OpenCV 编程简 ...

  2. 【入门】(二)相机标定、矩阵求解、相机位姿势估计

    目录 目录 一.相机模型.内参.外参,畸变以及相机标定 二.基本矩阵与对极约束 三.单应矩阵 四.相机姿势估计 一.相机模型.内参.外参,畸变以及相机标定 1.坐标系转换 (1)坐标系概念 世界坐标系 ...

  3. ORBSLAM中单应矩阵求解

    ORBSLAM中单应矩阵求解 1. 单应矩阵求解 2.用DLT方法求解单应矩阵H 3. 三角化求深度 4. 使用RT三角化 1. 单应矩阵求解 /*** @brief 计算单应矩阵,假设场景为平面情况 ...

  4. OpenCV基础矩阵求解解析笔记

    文章目录 1. 基础矩阵求解原理 1.1 基础矩阵推导 1.1.1 相机模型 1.1.2 对极几何 1.1.3 基础矩阵性质 1.2 7 7 7点法求解基础矩阵 1.3 8 8 8点法求解基础矩阵 1 ...

  5. 空间坐标系以及空间两三维坐标系转换矩阵解释

    空间坐标系以及空间两三维坐标系转换矩阵解释 因为工作的原因,需要进行不同坐标系的一个转换,在查阅了众多的网页之后,发现有用的没几个,而且众多都是抄的同一篇文章,而且都是罗列以下旋转的方式,几乎没有解释 ...

  6. 转换矩阵、平移矩阵、旋转矩阵关系以及python实现旋转矩阵、四元数、欧拉角之间转换

    文章目录 1. 转换矩阵.平移矩阵.旋转矩阵之间的关系 2. 缩放变换.平移变换和旋转变换 2. python实现旋转矩阵.四元数.欧拉角互相转化 由于在平时总是或多或少的遇到平移旋转的问题,每次都是 ...

  7. 定位(1):两点对+两旋转角度计算转换矩阵

    定位(1):两点对+两旋转角度计算转换矩阵 已知: 坐标系A和坐标系B(全站仪坐标系/大地坐标系(竖直方向向上))对应的两个点的坐标. 点1在A坐标系下的坐标A1(X1,Y1,Z1); 点1在B坐标系 ...

  8. Transforms CTM, 转换矩阵

    Quartz转换实现的原理:Quartz把绘图分成两个部分, 用户空间,即和设备无关, 设备空间, 用户空间和设备空间中间存在一个转换矩阵 : CTM 本章实质是讲解CTM Quartz提供的3大功能 ...

  9. 单应性矩阵求解函数findHomography()

    OPENCV官方地址:Camera Calibration and 3D Reconstruction 上面这个地址是OPENCV标定和三维重建集合的函数说明,包括标定原理,过程和工具的使用,想要使用 ...

最新文章

  1. Lambda表达式关于like问题(未解决)
  2. Ie html button消失,input 按钮在IE下兼容问题
  3. LeetCode第121题 买卖股票的最佳时机
  4. ITK:使用GMM EM进行分布式采样
  5. 经典C语言程序100例之三九
  6. jquery 根据class名 赋值_jQuery简单用法!!!
  7. 基于Nginx的https服务
  8. Spring注解中@Configuration和@Configurable的区别
  9. 为什么我加了过滤器然后就登不进去了_布隆过滤器过时了,未来属于布谷鸟过滤器?...
  10. mysql导入社工库文件_社工库-数据表结构设计和数据导入
  11. Network 20Q--Q2 How does Google sell ad spaces?
  12. linux tcp文件分包_畅谈linux下TCP(下)
  13. django migrate无效的解决方法
  14. 微软 补丁 服务器,2003到2016各版服务器操作系统ms17-010补丁直链地址
  15. 小程序 长按转发_微信小程序实现限制用户转发功能的实例代码
  16. 【UE5】AI随机漫游蓝图两种实现方法(角色蓝图、行为树)
  17. 数据建模 Database Modeling:概念 (Conceptual) vs 逻辑 (Logical) vs 物理数据 (Physical) 模型
  18. 1-5分钟上手自动化测试——Airtest+Poco快速上手
  19. 使用Apache的Proxy模块实现对被代理网站的访问
  20. The application of backtracking

热门文章

  1. 动态添加XtraTabControl
  2. python 查看 .npy文件 和 .pkl 文件的方法
  3. Centos7安装Python3.7
  4. 手机壳鸿蒙,手机壳黑榜发布 真相太惊人!
  5. linux基础-1.1USB设备(USB1.0以上)连接使用
  6. malloc、calloc、realloc和free
  7. 计算机职称在线考试报名系统,2020年计算机职称考试网上如何报名
  8. 编译Linux内核的详细过程
  9. Apache Camel简化SOA实施进程
  10. JAVA学习:maven开发环境快速搭建How to download J2EE API (javaee.jar) from Maven