`
java-mans
  • 浏览: 11459365 次
文章分类
社区版块
存档分类
最新评论

hdu2604-Queuing-矩阵

 
阅读更多

http://acm.hdu.edu.cn/showproblem.php?pid=2604

题意是,有个长度为N的队列,男女一起站队,不能有男男男(fff)或者男女男(fmf)出现在对列.队列的排列方法有多少。

这个题出在这章,开始还以为是递归求解的题,就想着推公式。想了半天没有什么名目,有点急功近利,看看网上才知道可以用矩阵的解法。

现在依自己的看法分析分析这俩解法

DP解法:

当N>4时f(n)=f(n-1)+f(n-3)+f(n-4)

即最后一个字符是m时,前n-1个人的序列是F(n-1)种,最后俩是mf或者ff时,限制了倒数第三位必须是(mmf、mff),最后三个字符只有是mmf时,符合要求(没有限制),即有f(n-3)种序列,最后四个字符是mmff时符合要求(刚才的n-3的俩情况,mmf已经在n-3中体现,n-4不再考虑,只考虑mff前加个m的n-4的情况)。

总结:这个分析方式和DP的思考方式一样,站在最后的位置上,把可能会关联的前面的几个位置规划进去,从而可以推导出公式。以后做题的时候 一定要冷静,最重要的不是做出来题,而是从做题的过程中学到东西,尽量做题的时候理清思绪。

矩阵解法:

构建矩阵用快速幂取模

但是还不太理解,先放在这,待以后再更新。

据了解这个还有trie图的理解法。

假定根节点为字符串的最后一个字符,由根结点到根节点的回路有m、fmm、ffmm,注意这是从一个字符串的后面向前走这些字符到达另一个字符串,恰好和上面的扩展递推相一致。。。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics