HDU 2604 Queuing
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相关推荐
- HDU 2604 Queuing(矩阵高速幂)
题目地址:HDU 2604 这题仅仅要推出公式来,构造矩阵就非常easy了.问题是推不出公式来..TAT.. 从递推的思路考虑.用f(n)表示n个人满足条件的结果.假设最后一个是m则前n-1人能够随意 ...
- hdu 2604 Queuing AC自动机构造递推式-矩阵-结果
http://acm.hdu.edu.cn/showproblem.php?pid=2604 题意: L个人排队,这一队里男性用m表示,女性用f表示,问长度为L的序列里面不包含形如"fmf& ...
- 【递推矩阵快速幂】hdu 2604
前四位我们可以算出d[1]=2,d[2]=4,d[3]=6,d[4]=9. 我们可以这样想:一个合法串可以由两个较短的合法串组成 就以d[n]为例:(注意不能重复) 1.n-1个字符 ...
- HDoj 2604 queuing
Problem Description Queues and Priority Queues are data structures which are known to most computer ...
- HDOJ 2604 Queuing (递推+矩阵快速幂)
点击打开链接 题意:给你一个长度为L的由m和f两种字母组成的字符串,定义存在fmf以及fff子串的都是不符合要求的串,问长度为L的符合要求的串有多少个? 解题思路: 首先找出递推关系式,先给出递推关系 ...
- pinterest数据科学家访谈
介绍 (Introduction) Pinterest, Inc. is a social media web and mobile application company founded in 20 ...
- hdu 1575Tr A
Tr A Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU2604 Queuing
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2604 矩阵乘法,得到递推公式,构造系数矩阵,然后进行快速幂. View Code 1 #include ...
- Python爬虫之HDU提交数据
前一篇http://www.cnblogs.com/liyinggang/p/6094338.html 使用了爬虫爬取hdu 的代码,今天实现了将数据向hdu 提交的功能,接下来就是需要将两个功能合并 ...
最新文章
- 一文详解 RNN 及股票预测实战(Python)!
- 阿里云 物联网产品架构
- git 撤销刚才的rebase_git rebase 的使用 (用于撤销某次commit)
- mysql集群经常无法truncate_失败的mysql cluster配置-无法顺利转换已有数据
- 【学习笔记】33、具有Python特色的循环
- 经典设计模式——策略模式
- 【i.MX6UL/i.MX6ULL开发常见问题】单独编译内核,uboot生成很多文件,具体用哪一个?...
- Jmeter进行分布式性能测试
- Android性能优化典范(转)
- Flask 正则路由匹配——转换器
- python基础二:函数
- 小学计算机知识题,小学信息技术基础知识试题
- hdu 3951 博弈
- matlab-自控原理 已知x~=Ax+Bu中的AB矩阵和X0,求单位输入下的时间响应
- 在windows系统下制作虚拟软驱
- CentOS7配置阿里源
- CSR烧录工具csr单个蓝牙烧录小工具qcc300x烧录软件/CSR86xx烧写工具
- 十年股市投资回顾与反思
- 为前端工作者准备的几个炫彩的js动画库
- ASP.NET微信群机器人管家系统,源码分享
热门文章
- aspen plus大小_[软件]Aspen Plus 这些常识,你都懂了吗?
- linux mysql 查询慢_linux – MySQL非常简单的SELECT查询速度极慢
- flask向html传函数,Flask----函数数据类型传参
- java导出文件教程_Java文件教程
- ssm框架逻辑删除mysql_ssm框架小总结——批量删除
- python微控制器编程从零开始 pdf_Python极客项目编程_(美)Mahesh Venkitachalam.pdf
- Ubuntu ufw 取消 网关到 224.0.0.1 multicast 日志
- linux如何打开url,用于打开URL的命令?
- linux中mysql不显示中文_linux中解决mysql中文乱码方法
- mysql中毫秒的保存类型