HDU2604: 本鶸第二道矩阵快速幂。

题意: 
n个人排队,f表示女,m表示男,包含子串fmf和fff为O队列,否则为E队列,求有多少个序列为E队列。

由于只求个数,按经验xjb找一下递推公式 :

用lm(n)表示n个人满足结果的个数,那么

1)如果最后一个是m,那么就不考虑他,lm(n)为前n-1的结果个数;

2)如果最后一个是f,并且是mmf,那么需要向前推3位,即lm(n-3);//不考虑fmf和fff

3)如果最后一个是f,并且是mff,那么需要再向前推一位到mmff才能满足结果,即lm(n-4);

所以lm(n)=lm(n-1)+lm(n-3)+lm(n-4);

不过题目提到要%M,猜一下无脑递推大概会TLE,按照1e17fibonacci的经验我们知道这个时候就需要矩阵加速来搞一下。

借一张神犇们的图说明一下矩阵的构造方法

矩阵和快速幂的知识可以参考这里

#include<cstdio>
#include<cstring>struct matrix
{int s[4][4];matrix(){memset(s,0,sizeof(s));}
};
int n,mod,sq[4][4]={{0,0,0,1},{1,0,0,0},{1,1,0,0},{0,0,1,1}};
void lm00(int *a,int *b)
{for(int i=0;i<16;i++)a[i]=b[i];
}
matrix mult(int a[][4],int b[][4])
{matrix c;for(int i=0;i<4;i++)for(int j=0;j<4;j++){for(int k=0;k<4;k++)c.s[i][j]=(c.s[i][j]+a[i][k]*b[k][j])%mod;}return c;
}
matrix lm(int m)
{matrix a;if(m==1){lm00(&a.s[0][0],&sq[0][0]);}else{a=lm(m/2);a=mult(a.s,a.s);if(m&1)a=mult(a.s,sq);}return a;
}
int main()
{int ans=0;matrix s;while(~scanf("%d%d",&n,&mod)){s=lm(n-2);ans=0;for(int i=0;i<4;i++){for(int j=0;j<4;j++){ans=(ans+s.s[i][j])%mod;}}printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/gfvod/p/5548318.html

HDU 2604 Queuing相关推荐

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

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

  2. hdu 2604 Queuing AC自动机构造递推式-矩阵-结果

    http://acm.hdu.edu.cn/showproblem.php?pid=2604 题意: L个人排队,这一队里男性用m表示,女性用f表示,问长度为L的序列里面不包含形如"fmf& ...

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

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

  4. HDoj 2604 queuing

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

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

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

  6. pinterest数据科学家访谈

    介绍 (Introduction) Pinterest, Inc. is a social media web and mobile application company founded in 20 ...

  7. hdu 1575Tr A

    Tr A Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  8. HDU2604 Queuing

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2604 矩阵乘法,得到递推公式,构造系数矩阵,然后进行快速幂. View Code 1 #include ...

  9. Python爬虫之HDU提交数据

    前一篇http://www.cnblogs.com/liyinggang/p/6094338.html 使用了爬虫爬取hdu 的代码,今天实现了将数据向hdu 提交的功能,接下来就是需要将两个功能合并 ...

最新文章

  1. 一文详解 RNN 及股票预测实战(Python)!
  2. 阿里云 物联网产品架构
  3. git 撤销刚才的rebase_git rebase 的使用 (用于撤销某次commit)
  4. mysql集群经常无法truncate_失败的mysql cluster配置-无法顺利转换已有数据
  5. 【学习笔记】33、具有Python特色的循环
  6. 经典设计模式——策略模式
  7. 【i.MX6UL/i.MX6ULL开发常见问题】单独编译内核,uboot生成很多文件,具体用哪一个?...
  8. Jmeter进行分布式性能测试
  9. Android性能优化典范(转)
  10. Flask 正则路由匹配——转换器
  11. python基础二:函数
  12. 小学计算机知识题,小学信息技术基础知识试题
  13. hdu 3951 博弈
  14. matlab-自控原理 已知x~=Ax+Bu中的AB矩阵和X0,求单位输入下的时间响应
  15. 在windows系统下制作虚拟软驱
  16. CentOS7配置阿里源
  17. CSR烧录工具csr单个蓝牙烧录小工具qcc300x烧录软件/CSR86xx烧写工具
  18. 十年股市投资回顾与反思
  19. 为前端工作者准备的几个炫彩的js动画库
  20. ASP.NET微信群机器人管家系统,源码分享

热门文章

  1. aspen plus大小_[软件]Aspen Plus 这些常识,你都懂了吗?
  2. linux mysql 查询慢_linux – MySQL非常简单的SELECT查询速度极慢
  3. flask向html传函数,Flask----函数数据类型传参
  4. java导出文件教程_Java文件教程
  5. ssm框架逻辑删除mysql_ssm框架小总结——批量删除
  6. python微控制器编程从零开始 pdf_Python极客项目编程_(美)Mahesh Venkitachalam.pdf
  7. Ubuntu ufw 取消 网关到 224.0.0.1 multicast 日志
  8. linux如何打开url,用于打开URL的命令?
  9. linux中mysql不显示中文_linux中解决mysql中文乱码方法
  10. mysql中毫秒的保存类型