Queuing

Queues and Priority Queues are data structures which are known to most computer scientists. The Queue occurs often in our daily life. There are many people lined up at the lunch time.

Now we define that ‘f’ is short for female and ‘m’ is short for male. If the queue’s length is L, then there are 2 L numbers of queues. For example, if L = 2, then they are ff, mm, fm, mf . If there exists a subqueue as fmf or fff, we call it O-queue else it is a E-queue.
Your task is to calculate the number of E-queues mod M with length L by writing a program.
Input
Input a length L (0 <= L <= 10 6) and M.
Output
Output K mod M(1 <= M <= 30) where K is the number of E-queues with length L.
Sample Input

3 8
4 7
4 8

Sample Output

6
2
1

思路:
使用矩阵快速幂,递推会超时。
公式:f(n)=f(n-1)+f(n-3)+f(n-4)

完整代码:

#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
const int maxn=4;
#define mod(x) ((x)%MOD)
int n,MOD;
struct mat
{ll m[maxn][maxn];
}unit;mat operator *(mat a,mat b)
{mat ret;ll x;for(int i=0;i<maxn;i++){for(int j=0;j<maxn;j++){x=0;for(int k=0;k<maxn;k++){x+=mod((ll)a.m[i][k]*b.m[k][j]);}ret.m[i][j]=mod(x);}}return ret;
}void init_unit()
{for(int i=0;i<maxn;i++){unit.m[i][i]=1;}return ;
}mat pow_mat(mat a,ll n)
{mat ret=unit;while(n){if(n&1){ret=ret*a;}a=a*a;n>>=1;}return ret;
}
int main()
{init_unit();while(cin>>n>>MOD){if(n<=4){cout<<num[n]%MOD<<endl;}else{mat a,b;memset(a.m,0,sizeof(a.m));a.m[0][0] = 6;a.m[1][0] = 4;a.m[2][0] = 2;a.m[3][0] = 1;b.m[0][0]=1;b.m[0][1]=0;b.m[0][2]=1;b.m[0][3]=1;b.m[1][0]=1;b.m[1][1]=0;b.m[1][2]=0;b.m[1][3]=0;b.m[2][0]=0;b.m[2][1]=1;b.m[2][2]=0;b.m[2][3]=0;b.m[3][0]=0;b.m[3][1]=0;b.m[3][2]=1;b.m[3][3]=0;b=pow_mat(b,n-3);b=b*a;               /* 注意矩阵乘法a*b和b*a是不一样的 */cout<<b.m[0][0]<<endl;}}return 0;
}

Queuing(矩阵快速幂)相关推荐

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

    一道经典的矩阵快速幂模板题. 传送门1-->快速幂基本思想 传送门2-->矩阵快速幂讲解(教主传授) 传送门3.1-->HDU-1575(经典矩阵快速幂模板题1) 传送门3.2--& ...

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

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

  3. 矩阵快速幂+构造方法

    与快速幂一样,可以将递推式通过二进制的方式来进行优化,这个学了快速幂就是十分容易理解 大概的板子如下: struct mat///自己定义大小的矩阵 {ll m[11][11]; }; mat mul ...

  4. 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂

    原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...

  5. 快速幂 + 矩阵快速幂

    快速幂 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #define LL lo ...

  6. HDU4549(矩阵快速幂+快速幂)

    f(n)=a^f(n-1) + b^f(n-2):计算矩阵部分用矩阵快速幂:计算a的幂次和b的幂次用快速幂. #include<iostream> #include<algorith ...

  7. [HNOI2008]GT考试[矩阵快速幂+kmp优化的dp]

    解题思路:假如说我们用f[i]表示长度为i的串能组合成无不吉利数字的组合的个数的话我们无法找到f[i]和f[i+1]的关系,就是我们下一位填某个数字会不会出现不吉利串,这就和你前面的串末尾于不吉利串重 ...

  8. I-Matrix Power Series POJ - 3233 矩阵快速幂+分治

    I-Matrix Power Series POJ - 3233 矩阵快速幂+分治 Problem Description Given a n × n matrix A and a positive ...

  9. H - Fibonacci POJ - 3070 (矩阵快速幂)

    H - Fibonacci POJ - 3070 (矩阵快速幂) Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and ...

最新文章

  1. 解决 Windows 系统使用 Homestead 运行 Laravel 本地项目响应缓慢问题
  2. payara 创建 集群_使用Payara Micro的Easy Java EE Microservices
  3. 国家开放大学2021春1032成本管理题目
  4. ps如何修改图片大小尺寸_PS新手入门教程:学习如何修改画布的大小
  5. 2017.5.6 表达式的值 思考记录
  6. DBS-Function:f_GetPy
  7. LeetCode 38外观数列
  8. html华文行楷英文,HTML,CSS,font-family:中文字体的英文名称 (宋体 微软雅黑)...
  9. 搭建sql-libs的环境
  10. git stach储藏功能(SourceTree 使用方法,Visual studio 2019 中使用
  11. 王者荣耀微信登陆不了服务器,王者荣耀微信区怎么登陆不了 王者荣耀微信区怎么登不上...
  12. html5 窗口 最小化,HTML5 窗口最小化动画(先压扁后变窄)
  13. matlab算sma,如何计算简单移动平均线(SMA)
  14. Mac更新后ae不能打开,ae安装后打开报错解决方法
  15. RxJava2.x是一个非常棒的流式编程,采用的观察者模式思想,事件的产生者产生事间之后发送给绑定的接受者,接受顺序与发送顺序一致.但是 是独立于RxJava1.x存在,本文讲解RxJava2.x的简
  16. 【记录】Tiff图像的前处理,median blur filter 及 linear stretch
  17. 手把手教你用LVS-DR模式搭建Nginx集群
  18. c语言中其不同数据类型,C语言中不同类型数据间的转换
  19. Tomcat 集群搭建入门
  20. 这位超级电脑之父,年近九旬仍不愿退休

热门文章

  1. matlab基于遗传算法的BP神经网络优化算法(附代码)
  2. 求pi的数学模型matlab计算pi,MATLAB实验-pi的计算 圆周率的近似计算 数学软件与数学实验 教学课件.ppt...
  3. Ubuntu16.04上NVIDIA Titan显卡出现屏幕分辨率失常
  4. java获取emf中的文字_一键提取图片中的文字的5种方法!
  5. 21.Rust的面向对象特征
  6. Swagger 实战教程-姚海陆-专题视频课程
  7. 1.OP-TEE代码结构
  8. 长尾关键词 挖掘出来的长尾关键词要怎么筛选?筛选条件有哪些
  9. LeetCode-118
  10. 计算机系统自动撮合成交的原则,如何进行计算机撮合成交?计算机撮合成交有哪些方式?...