博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu-2604 Queuing---递推+矩阵快速幂
阅读量:6582 次
发布时间:2019-06-24

本文共 1045 字,大约阅读时间需要 3 分钟。

题目链接:

题目大意:

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

解题思路:

用f(n)表示n个人满足条件的结果,那么如果最后一个人是m的话,那么前n-1个满足条件即可,就是f(n-1); 

如果最后一个是f那么这个还无法推出结果,那么往前再考虑一位:那么后三位可能是:mmf, fmf, mff, fff,其中fff和fmf不满足题意所以我们不考虑,但是如果是 
mmf的话那么前n-3可以找满足条件的即:f(n-3);如果是mff的话,再往前考虑一位的话只有mmff满足条件即:f(n-4) 
所以f(n)=f(n-1)+f(n-3)+f(n-4),递推会超时,可用矩阵快速幂 
构造一个矩阵: 
pic

1 #include
2 using namespace std; 3 int MOD; 4 struct Mat 5 { 6 int a[4][4]; 7 int n, m;//n为行数,m为列数 8 Mat(int n, int m):n(n), m(m) 9 {10 memset(a, 0, sizeof(a));11 }12 void init()13 {14 for(int i = 0; i < n; i++)a[i][i] = 1;//初始化成单位矩阵15 }16 void output()17 {18 for(int i = 0; i < n; i++)19 {20 for(int j = 0; j < m; j++)21 {22 cout<
<<" ";23 }24 cout<
> n >> k)74 {75 MOD = k;76 if(n <= 4)77 {78 cout<
<

 

转载于:https://www.cnblogs.com/fzl194/p/8877733.html

你可能感兴趣的文章
精通Spring+4.x++企业开发与实践之SpEL
查看>>
好博客地址推荐(长期更新)
查看>>
Android零基础入门第43节:ListView优化和列表首尾使用
查看>>
table实现等高的优势
查看>>
oracle 11g dataguard 使用快照实现临时读写
查看>>
阿里云人才市场,百家公司、近千职位等你加入!
查看>>
不同时间阶段的seo优化技术侧重点
查看>>
机器学习概念原理及常用算法
查看>>
Java JDBC直连
查看>>
最近搭阿里云redis集群遇到的坑
查看>>
request方法
查看>>
贷款计算公式——java实现
查看>>
教你给IDEA安装插件
查看>>
在windows上安装curl
查看>>
使用EasyWechat为“WX公众号”增加一个访问统计的方案实现
查看>>
数据库的工具类
查看>>
Spring Cloud Consul综合整理
查看>>
95后美女当“妈”,养了对机器人双胞胎
查看>>
Dart 学习笔记2 - numbers数字 ,operator运算符号,if else 条件语句,for loop循环语句,mac环境安装Dart2...
查看>>
MaxCompute JOIN优化小结
查看>>