长度为 n 有男有女的队伍里没有 fmf 和 fff 的序列有多少

判断最后一个人无法得出结论

于是判断最后两人的递推式:

fm(n) =                mm(n-1) //最后两人为fm的长度为n的队伍 只能由 mm(n-1)得到

mf(n) = fm(n-1)+        ff(n-1)

ff(n) = fm(n-1)

mm(n) =         mf(n-1)+     mm(n-1)

最后S(n)=fm(n)+mf(n)+ff(n)+mm(n);

|1 1 1 1 1|  | S(n-1) |  | S(n) |

|0 0 0 0 1|  | fm(n-1)|  | fm(n)|

|0 1 0 1 0| * | mf(n-1)| = | mf(n)|

|0 1 0 0 0|  | ff(n-1)|  | ff(n)|

|0 0 1 0 1|  | mm(n-1)|  | mm(n)|

剩下的就是矩阵快速幂了。

 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define LL long long
struct P{
int a[][];
};
int b[]={,,,,};
int ans,n,mod;
P s,c;
P mult(P a,P b)
{
P c;
memset(c.a,,sizeof(c.a));
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
for(int k=;k<=;k++)
c.a[i][j]=(c.a[i][j]+a.a[i][k]*b.a[k][j] )%mod;
}
}
return c;
}
void ini()
{
memset(s.a,,sizeof(s.a));
memset(c.a,,sizeof(c.a));
s.a[][]=;
s.a[][]=; s.a[][]=;
s.a[][]=;
s.a[][]=; s.a[][]=;
}
void fuc(int n)
{
for(int i=;i<=;i++) c.a[i][i]=;
while(n)
{
if(n&)
{
c=mult(c,s);
}
s=mult(s,s);
n>>=;
}
}
int main()
{
while(~scanf("%d%d",&n,&mod))
{
if(n==)
{
puts("");
continue;
}
ini();
fuc(n-);
ans=;
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
ans=(ans+c.a[i][j]*b[j])%mod;
}
}
printf("%d\n",ans);
}
}

HDU 2604 - Queuing的更多相关文章

  1. HDU 2604 Queuing,矩阵高速幂

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

  2. HDU 2604 Queuing 矩阵高速幂

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

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

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

  4. HDU 2604 Queuing (矩阵乘法)

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

  5. hdu 2604 Queuing dp找规律 然后矩阵快速幂。坑!!

    http://acm.hdu.edu.cn/showproblem.php?pid=2604 这题居然O(9 * L)的dp过不了,TLE,  更重要的是找出规律后,O(n)递推也过不了,TLE,一定 ...

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

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

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

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

  8. HDU 2604 Queuing(递推+矩阵)

    Queuing [题目链接]Queuing [题目类型]递推+矩阵 &题解: 这题想是早就想出来了,就坑在初始化那块,只把要用的初始化了没有把其他的赋值为0,调了3,4个小时 = = 本题是可 ...

  9. HDU - 2604 Queuing(递推式+矩阵快速幂)

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

  10. HDU 2604 Queuing( 递推关系 + 矩阵快速幂 )

    链接:传送门 题意:一个队列是由字母 f 和 m 组成的,队列长度为 L,那么这个队列的排列数为 2^L 现在定义一个E-queue,即队列排列中是不含有 fmf or fff ,然后问长度为L的E- ...

随机推荐

  1. 某Java游戏服务器用到的知识

    Runtime.getRuntime().addShutdownHook(shutdownHook); shutdownHook()函数可以在jvm关闭的时候进行内存清理.对象销毁等操作 http:/ ...

  2. 写一个Windows上的守护进程(6)Windows服务

    写一个Windows上的守护进程(6)Windows服务 守护进程因为要开机启动,还要高权限,所以我就把它做成Windows服务了. 关于Windows服务的官方文档,大家可以看https://msd ...

  3. (转) Special members

    原地址:http://www.cplusplus.com/doc/tutorial/classes2/   Special members [NOTE: This chapter requires p ...

  4. Install cv2.so for Anaconda

    sudo apt-get install python-opencv cp /usr/lib/python2.7/dist-packages/cv2.so /opt/anaconda/lib/pyth ...

  5. (转)Ubuntu中使用dpkg安装deb文件提示依赖关系问题,仍未被配置

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5638149.html 参考网址: http://zhidao.baidu.com/link?url=b ...

  6. java中的File.separator

    前些天遇到一个问题,困扰了好久,现在终于解决了. 问题:上传的图片不能正确显示. 我的开发环境是在Windows下,工程在Windows下能正常部署,上传的图片也可以正常的显 示.但是把工程部署在服务 ...

  7. mysql在linux上重启

    如何启动/停止/重启MySQL 一.启动方式 1.使用 service 启动:service mysqld start 2.使用 mysqld 脚本启动:/etc/inint.d/mysqld sta ...

  8. Android中通过代码获取arrays.xml文件中的数据

    android工程res/valuse文件夹下的arrays.xml文件中用于放各种数组数据,比如字符串数组.整型数组等,数组中的数据可能是具体的值,也有可能是对资源数据的引用,下面针对这两种情况通过 ...

  9. C语言随笔_类型声明

    有位同学说,“老师,我运行如下代码,结果报错了” #include <iostream.h>   int main(){ char c,  int b; return 0; } 报错结果是 ...

  10. Android APK安装包瘦身[转]

    很显然,APK安装包越小越好.下面从代码,资源文件,使用策略几个方面简要介绍下: 代码 保持良好的编程习惯,不要重复或者不用的代码,谨慎添加libs,移除使用不到的libs. 使用proguard混淆 ...