前四位我们可以算出d[1]=2,d[2]=4,d[3]=6,d[4]=9. 
 
我们可以这样想:一个合法串可以由两个较短的合法串组成 
 
就以d[n]为例:(注意不能重复) 
 
1、n-1个字符的时候: +m 
 
2、n-2: 只能+mm,会和n-1重复,所以不考虑n-2 
 
3、n-3: +mmf 
 
4、n-4: +mmff 
 
5、n-5: 如果是+mmffm,会与n-1重复,+mmmff会与n-4重复,+mmmmf会与n-3重复(不考虑) 
 
所以就考虑n-1,n-3,n-4,DP等式就出来了:dp[n]=dp[n-1]+dp[n-3]+dp[n-4] 
 
矩阵快速幂
#include <map>
#include <set>
#include <list>
#include <queue>
#include <deque>
#include <stack>
#include <string>
#include <time.h>
#include <cstdio>
#include <math.h>
#include <iomanip>
#include <cstdlib>
#include <limits.h>
#include <string.h>
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;#define LL long long
#define MIN INT_MIN
#define MAX INT_MAX
#define PI acos(-1.0)
#define FRE freopen("input.txt","r",stdin)
#define FF freopen("output.txt","w",stdout);
int MOD ;
#define n 4
struct Mat{int mat[4][4];
};
//初始化单位矩阵
Mat init(){Mat E;for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){if(i == j)E.mat[i][i] = 1;elseE.mat[i][j] = 0;}}return E;
}
//重载乘法
Mat operator *(Mat a,Mat b){Mat c;memset(c.mat,0,sizeof(Mat));for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){for(int k = 0; k < n; k++){if(a.mat[i][k] && b.mat[k][j]){c.mat[i][j] = (c.mat[i][j] + a.mat[i][k] * b.mat[k][j]) % MOD;}}}}return c;
}
//重载加法
Mat operator +(Mat a,Mat b){Mat c;memset(c.mat,0,sizeof(Mat));for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){c.mat[i][j] = (a.mat[i][j] + b.mat[i][j]) % MOD;}}return c;
}
//重载幂次方
Mat operator ^(Mat A,LL x){if(x == 1)return A;Mat c;c = init();for(; x ; x >>= 1){if(x&1){c = c*A;}A = A*A;}return c;
}
int main(){int l,m;int f[4] = {2,4,6,9};Mat gao = {1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0};while(scanf("%d%d",&l,&m)!=EOF){if(!l){printf("0\n");}elseif(l<=4)printf("%d\n",f[l-1]);else{MOD = m;Mat ans = gao^(l-4);int res = ans.mat[0][0]*9  + ans.mat[0][1]*6 + ans.mat[0][2]*4 + ans.mat[0][3]*2;printf("%d\n",res%m);}}return 0;
}

【递推矩阵快速幂】hdu 2604相关推荐

  1. 递推+矩阵快速幂 HDU 2065

    1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 5 using namespace ...

  2. 湘潭赛Easy wuxing(递推+矩阵快速幂or DP)

    湘潭赛Easy wuxing(递推+矩阵快速幂or DP) 十分感谢老师的思路! 题目描述 "五行"是中国传统哲学思想,它认为认为大自然的现象由"木.火.土.金.水&qu ...

  3. HDU - 6185 Covering(暴搜+递推+矩阵快速幂/杜教BM)

    题目链接:点击查看 题目大意:规定宽度为4,给定长度为n,求用1*2和2*1的瓷砖,将其完全铺满能有多少种方法. 分析:自从学会了矩阵快速幂之后,看到1e18的数据量都会下意识的往递推上面想,但是以前 ...

  4. Recursive sequence HDU - 5950 (递推 矩阵快速幂优化)

    题目链接 F[1] = a, F[2] = b, F[i] = 2 * F[i-2] + F[i-1] + i ^ 4, (i >= 3) 现在要求F[N] 类似于斐波那契数列的递推式子吧, 但 ...

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

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

  6. Happy Necklace dp 递推 矩阵快速幂

    当满足素数2和素数3的条件后,下一个素数区间5乃至之后的都会被满足. 考虑能否从f[n - 1]转换到f[n],考虑第i - 1位,如果后面加红色一定满足条件,所以f[n]先是加上f[n - 1] 如 ...

  7. POj 3420 Quad Tiling 状态压缩DP+递推+矩阵快速幂

    哈哈,写了好久的,总算对了. 接下来介绍两种思路: 先介绍一种   递推+矩阵的快速幂的方法 一种DP的思想考虑4×n的最后一列  ,可以放的方法一共有5种 1.放4个 1×2  则 为dp[n-2] ...

  8. NYOJ 1075 (递推 + 矩阵快速幂)

    "红色病毒"问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 医学研究者最近发现了一种新病毒,因为其蔓延速度与曾经在Internet上传播的&qu ...

  9. BZOJ 1411Vijos 1544 : [ZJOI2009]硬币游戏【递推,快速幂】

    1411: [ZJOI2009]硬币游戏 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 897  Solved: 394 [Submit][Stat ...

最新文章

  1. 批量处理SQL Oracle下:
  2. react学习(73)--子组件this
  3. 图片文字美化广告位代码 广告源码
  4. JavaScript萌新基础
  5. linux卡片电脑源码,x4412开发板ibox卡片电脑项目实战9-搭建最简单的linux文件系统...
  6. GitLab 配置 OAuth2 实现第三方登录,简直太方便了!
  7. 指定JDK版本运行Tomcat
  8. 借书卡程序设计java_java图书馆借书编程求解
  9. OpenCV-Python中的简单数字识别OCR
  10. Win10华硕atk驱动怎么安装_雨林木风win10系统U盘怎么安装
  11. python在冒号处显示语法错误_python for常见语法错误
  12. OpenCV-学习历程4- 读取图像/读取像素/修改像素值方法(包含灰度+rgb图像像素处理方式)
  13. 银行对公业务和对私业务
  14. 计算机网络图标在哪里照,网络设备图标-电脑上的网络图标怎么显示
  15. 史上最全场景文字识别资源汇集(56篇重要论文 + 20 个开源代码 + 330 个实验结果 + 1882个统计信息)...
  16. 数据结构笔记(王道考研) 第八章:排序
  17. 点名器——随机数的应用
  18. Shell攻关之运算符
  19. C++中的对齐方式及sizeof小结
  20. 程序员的英文代号_构建一个代号为1的聊天应用程序2

热门文章

  1. python---flask
  2. DVD-ROM区域码巧破解[转]
  3. 关于anaconda的使用和Python库的安装、卸载
  4. anaconda损坏的卸载方式
  5. 最简单测试工具开发教程(有手就行)
  6. xmp预设怎么导入pr_【教程】如何使用xmp格式的预设,看完这篇就懂了
  7. 【Linux网络编程(九)】ping命令 arp工作流程
  8. 头像上传(限制大小,格式,尺寸)
  9. TM遥感影像波段/通道bands
  10. 算法研究NO7.数字滤波