题目

最早不会写,看了网上的分析,然后终于想明白了矩阵是怎么出来的了,哈哈哈哈。

因为边上的项目排列顺序不一样,所以写出来的矩阵形式也可能不一样,但是都是可以的

//愚钝的我不会写这题,然后百度了,照着大神的题解,有了如下的东东:
//根据ff, mm, fm, mf ,先列出所有可能的组合方式(1表示连在一次,具体判断方式自己看看就知道了)
// ff mm fm mf
//ff 1 0 1 0
//mm 0 1 0 1
//fm 0 1 0 1
//mf 1 0 1 0
//题目中说不能有fff和fmf,所以去掉他们,最终结果如下
// ff mm fm mf
//ff 0 0 1 0
//mm 0 1 0 1
//fm 0 1 0 0
//mf 1 0 1 0
#include<stdio.h>
#include<string.h>
int num=,mod;
struct matrix
{
int a[][];
}answ;
matrix multiply(matrix x,matrix y)//矩阵乘法
{
matrix temp;
memset(temp.a,,sizeof(temp.a));
for(int i=;i<num;i++)
{
for(int k=;k<num;k++)
{
for(int j=;j<num;j++)
{
temp.a[i][j]=(temp.a[i][j]+x.a[i][k]*y.a[k][j])%mod;
}
}
}
return temp;
}
matrix calc(matrix a,int n)//矩阵快速幂——a^n
{
if(n==)return a;
matrix e;
for(int i=;i<num;i++)
for(int j=;j<num;j++)
e.a[i][j]=(i==j); while(n)
{
if(n&)
e=multiply(e,a);
n>>=;
a=multiply(a,a);
}
return e;
}
int main()
{
int n,sum;
while(scanf("%d%d",&n,&mod)!=EOF)
{
sum=;
matrix origin= {,,,,
,,,,
,,,,
,,,};
answ=calc(origin,n-);//因为给的项目是后两位
for(int i=;i<;i++)
for(int j=;j<;j++)
sum=(sum+answ.a[i][j])%mod;
printf("%d\n",sum);
}
return ;
}

hdu 2604 Queuing(动态规划—>矩阵快速幂,更通用的模版)的更多相关文章

  1. hdu 2604 Queuing(矩阵快速幂乘法)

    Problem Description Queues and Priority Queues are data structures which are known to most computer ...

  2. HDU 2604 Queuing(矩阵快速幂)

    题目链接:Queuing 题意:有一支$2^L$长度的队伍,队伍中有female和male,求$2^L$长度的队伍中除 fmf 和 fff 的队列有多少. 题解:先推导递推式:$f[i]=f[i-1] ...

  3. hdu 2604 递推 矩阵快速幂

    HDU 2604 Queuing (递推+矩阵快速幂) 这位作者讲的不错,可以看看他的 #include <cstdio> #include <iostream> #inclu ...

  4. HDU 2604 Queuing,矩阵高速幂

    题目地址:HDU 2604 Queuing 题意:  略 分析: 易推出:   f(n)=f(n-1)+f(n-3)+f(n-4) 构造一个矩阵: 然后直接上板子: /* f[i] = f[i-1] ...

  5. HDU 2604 Queuing(矩阵高速幂)

    题目地址:HDU 2604 这题仅仅要推出公式来,构造矩阵就非常easy了.问题是推不出公式来..TAT.. 从递推的思路考虑.用f(n)表示n个人满足条件的结果.假设最后一个是m则前n-1人能够随意 ...

  6. hdu 2604 Queuing (矩阵高速幂)

    Queuing Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  7. HDU.1575 Tr A ( 矩阵快速幂)

    HDU.1575 Tr A ( 矩阵快速幂) 点我挑战题目 题意分析 直接求矩阵A^K的结果,然后计算正对角线,即左上到右下对角线的和,结果模9973后输出即可. 由于此题矩阵直接给出的,题目比较裸. ...

  8. hdu 3117 Fibonacci Numbers 矩阵快速幂+公式

    斐波那契数列后四位可以用快速幂取模(模10000)算出.前四位要用公式推 HDU 3117 Fibonacci Numbers(矩阵快速幂+公式) f(n)=(((1+√5)/2)^n+((1-√5) ...

  9. HDU 2842 (递推+矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目大意:棒子上套环.第i个环能拿下的条件是:第i-1个环在棒子上,前i-2个环不在棒子上.每个 ...

随机推荐

  1. ListView Web 服务器控件概述(MSDN)

    1: "折叠"图像"展开"图像"复制"图像"复制悬停"图像 全部折叠全部展开 代码:全部 代码:多个 代码:Visual ...

  2. template_12特化与重载

    1,重载函数模板f<int*>((int*)pi);//1f<int>((int*)pi);//2上面用int*替换第一个模板的T,用int来替换第二个模板的T.那么将得到两个 ...

  3. 必须知道的.NET FrameWork

    这部分内容呢,对普通开发者来说,意义不是特别大.但是作为一个有情怀的开发者,应该追根溯源,懂一些自己用的工具, 的粗浅知识.并且这部分内容可以用来个HR吹嘘一下自己的情怀.基本就是这样. .NET生成 ...

  4. Cadence Allegro小技巧-从外部文本文件添加文本

    菜单“Add->Text”,然后在右侧Options栏设置好合适的Class and Subclass,Text block,然后在布板界面上点击鼠标左键,设置起始点,接着点击鼠标右键,在弹出的 ...

  5. 更改windows服务的配置文件app.config

    /// <summary> /// 获取每次处理记录数 /// </summary> /// <returns></returns> private s ...

  6. [大牛翻译系列]Hadoop(13)MapReduce 性能调优:优化洗牌(shuffle)和排序阶段

    6.4.3 优化洗牌(shuffle)和排序阶段 洗牌和排序阶段都很耗费资源.洗牌需要在map和reduce任务之间传输数据,会导致过大的网络消耗.排序和合并操作的消耗也是很显著的.这一节将介绍一系列 ...

  7. linux系统版本查看命令

    发布:theboy   来源:net   [大 中 小] 查看linux系统版本的命令 有如下命令可供参考: # lsb_release -a LSB Version:    :core-3.1-ia ...

  8. java 语法糖

    package syntax.autoCase; import java.util.Arrays; import java.util.List; public class autoCase { pub ...

  9. Java中构造函数执行顺序的问题

    1,  先执行内部静态对象的构造函数,如果有多个按定义的先后顺序执行:而且静态类的构造函数只会被执行一次,只在其第一个对象创建时调用,即便是创建了同一个类的多个对象,例如main()函数里b1,b2创 ...

  10. Install mcrypt for php on Mac OSX 10.10 Yosemite for a Development Server

    mcrypt is a file encryption method using secure techniques to exchange data. It is required for some ...