一道经典的矩阵快速幂模板题。

传送门1——>快速幂基本思想
传送门2——>矩阵快速幂讲解(教主传授)

传送门3.1——>HDU-1575(经典矩阵快速幂模板题1)
传送门3.2——>HDU-1575题解
传送门4.1——>HDU-1757(经典矩阵快速幂模板题2)
传送门4.2——>HDU-1757题解

心路历程

由于昨天刷了两道题,今天想着直接秒掉然后开下个专题。首先通过基本的代码求出规律,得到f(1)=2, f(2)=4, f(3)=6, f(4)=9, f(5)=15。(如果觉得不把握可以多算几个,待会给出测试代码)。得出公式: f[n]=f[n-1]+f[n-3]+f[n-4] 。 很快把代码敲出来了。 但总是无法通过。

d了两个小时的BUG,心态爆炸。最后发现:f(n)等于对应一列的矩阵值相加,而不是第一项,第三项和第四项相加(知识还是不扎实啊!)。 改动后,成功AC。

涉及的原理在传送门里。写的很详细。不贴解题过程了。万变不离其宗嘛

代码一共分为五个部分实现,都在注释里详细的标注了。分块理解会更简单一些。


测试代码:

举例:找出5位队列符合条件的个数, 列5个for循环, 求出不符合条件的个数x,用2^5减x,得到的就是符合条件的个数。 其余位数同理。

#include<iostream>
#include<string>
using namespace std;
char a[2] = {'f', 'm'};
int main() {string s[70]; int i = 0;for(int q=0;q<2;q++) {for(int w=0;w<2;w++) {for(int e=0; e<2; e++) {for(int r=0;r<2;r++) {for(int t=0;t<2;t++) {for(int y=0;y<2;y++) {s[i] += a[y];s[i] += a[t];s[i] += a[r];s[i] += a[e];s[i] += a[w];s[i] += a[q];i++;}}}}}}int sum = 0;for(int j = 0; j < i; j++) {int find1 = s[j].find("fmf");int find2 = s[j].find("fff");if(find1!=-1 || find2!=-1) sum++;}cout << sum;
return 0; }

AC代码:

#include<iostream>
#include<cstring>
using namespace std;
int L, M;
struct Matrix{                              //1、结构体 int a[4][4];Matrix() { memset(a, 0, sizeof(a)); } //构造函数
}; Matrix mul(Matrix A, Matrix B) {Matrix ret;for(int i=0; i<4; i++) for(int j=0; j<4; j++) {for(int k=0; k<4; k++) ret.a[i][j] += (A.a[i][k] * B.a[k][j])%M;ret.a[i][j] %= M;}return ret;
}Matrix pow(Matrix A, int n) {Matrix ret;for(int i=0; i<4; i++) ret.a[i][i]=1;   //单位矩阵 while(n) {if(n%2==1)  ret=mul(ret, A);A = mul(A, A);n /= 2;}return ret;
}
int main() {while(cin>>L>>M) {//2、特判 if(L == 1) { cout << 2%M << endl; continue; }    if(L == 2) { cout << 4%M << endl; continue; }if(L == 3) { cout << 6%M << endl; continue; }if(L == 4) { cout << 9%M << endl; continue; } //3、构造矩阵Matrix B;B.a[0][0] = B.a[0][2] = B.a[0][3]=1;B.a[1][0] = B.a[2][1] = B.a[3][2]=1;//4、快速幂Matrix ans1 = pow(B, L-4); //为什么f(n)的公式中明明没有第二项,这里为什么加上了?//因为在矩阵幂乘过程中,第二项可能不为0,而f(n)=这一行的相加和。因此少一项,就错了。 int sum = ((ans1.a[0][0]*9)%M+(ans1.a[0][1]*6)%M+(ans1.a[0][2]*4)%M+(ans1.a[0][3]*2)%M)%M;cout << sum << endl;}
return 0; }

如果这篇文章对你产生了帮助,就请给博主一个小小的赞吧!大家的点赞是我创作的最大动力!

43行代码AC_HDU-2604 Queuing(矩阵快速幂,附详细的知识讲解、模板例题)相关推荐

  1. 40行代码AC_HDU 1575 TrA 矩阵快速幂(附快速幂+矩阵快速幂的讲解)

    一道经典的矩阵快速幂模板题. 传送门1-->快速幂基本思想 传送门2-->矩阵快速幂讲解(教主传授) 心路历程 1.开始看成求主对角线元素和的n次幂了,用快速幂解得.结果压根不对,又仔细看 ...

  2. 矩阵快速幂以及其优化【华东交大课程】

    矩阵快速幂以及其优化[华东交大课程] 快速幂基础:C++快速幂_Kicamon的博客-CSDN博客 矩阵快速幂就是在快速幂的基础上结合矩阵运算的用法,其用途较为广泛,可以很大程度上优化代码. 一.矩阵 ...

  3. 43行代码AC——HDU 1757 A Simple Math Problem(矩阵快速幂,附快速幂讲解)

    一道经典的矩阵快速幂模板题. 传送门1-->快速幂基本思想 传送门2-->矩阵快速幂讲解(教主传授) 代码(去掉空行43行) #include<iostream> #inclu ...

  4. HDOJ 2604 Queuing (递推+矩阵快速幂)

    点击打开链接 题意:给你一个长度为L的由m和f两种字母组成的字符串,定义存在fmf以及fff子串的都是不符合要求的串,问长度为L的符合要求的串有多少个? 解题思路: 首先找出递推关系式,先给出递推关系 ...

  5. Queuing(矩阵快速幂)

    Queuing Queues and Priority Queues are data structures which are known to most computer scientists. ...

  6. 【递推矩阵快速幂】hdu 2604

    前四位我们可以算出d[1]=2,d[2]=4,d[3]=6,d[4]=9.    我们可以这样想:一个合法串可以由两个较短的合法串组成    就以d[n]为例:(注意不能重复)    1.n-1个字符 ...

  7. HDU 2243考研路茫茫——单词情结 (AC自动机+矩阵快速幂)

    背单词,始终是复习英语的重要环节.在荒废了3年大学生涯后,Lele也终于要开始背单词了. 一天,Lele在某本单词书上看到了一个根据词根来背单词的方法.比如"ab",放在单词前一般 ...

  8. [BZOJ3583]杰杰的女性朋友(矩阵快速幂)

    杰杰的女性朋友 时间限制:10s      空间限制:256MB 题目描述 杰杰是魔法界的一名传奇人物.他对魔法具有深刻的洞察力,惊人的领悟力,以及令人叹为观止的创造力.自从他从事魔法竞赛以来,短短几 ...

  9. 矩阵快速幂的学习(系统的学习)

    学习博客:https://www.cnblogs.com/cmmdc/p/6936196.html https://www.cnblogs.com/yan-boy/archive/2012/11/29 ...

最新文章

  1. 时间序列分析及应用r语言pdf_R语言:时间序列经典分析法(二)
  2. 二十一.HTTP属性管理
  3. Shiro的Base64和MD5加密的使用
  4. java 编译时找不到同一包中的文件_Java基础笔试练习(七)
  5. 基于.NetCore3.1系列 —— 日志记录之初识Serilog
  6. 【MySQL 中 动态sql,游标_】
  7. 运维测试工作笔记0003---使用Jmeter测试_http接口_高并发测试
  8. linux安装最新php版本下载地址,服务器配置-使用Linux编译安装PHP指定版本
  9. 【答题卡识别】基于matlab形态学答题卡识别【含Matlab源码 1135期】
  10. gitbook 配置
  11. 01.J2EE开发环境搭建
  12. 设置Windows系统双网卡同时上内外网
  13. 完整的棋牌游戏开发流程,你知道多少棋牌游戏开发。
  14. 【Windows网络编程】完成端口IOCP介绍(超详细)
  15. docker修改容器ip范围
  16. 【转载】springboot集成SMS发送短信
  17. 天然气阶梯是按年还是按月_燃气阶梯是一年一清吗 燃气阶梯的定义
  18. java 设置pdf 编码格式_Java 在PDF中添加条形码
  19. Y470N 显卡超频了GT550m 完美2.10 bios
  20. pe没法给服务器装系统吗,U盘重装系统无法进入PE解决方法

热门文章

  1. 第11讲:Reqeusts + PyQuery + PyMongo 基本案例实战
  2. redis面试精华指南pdf
  3. 深度思考|TCP协议存在那些缺陷?
  4. LVS:三种负载均衡方式比较+另三种负载均衡方式
  5. 动画图解 socket 缓冲区的那些事儿
  6. Rethink Technology预测看好VVC
  7. Zoom惊人财报、传苹果打造搜索引擎与谷歌竞争、Netflix部分剧集免费以吸引新用户等| Decode the Week...
  8. 百度媒体云智能编码技术实践
  9. 吴晓然:实时通信需要Codec和网络模块结合
  10. 腾讯云数据库闪耀曼哈顿,CynosDB回馈开源社区