HDU - 2604 Queuing解题报告

来源:互联网 发布:手机淘宝类目怎么修改 编辑:程序博客网 时间:2024/06/06 02:34

完全自己写的代码,自己思路,觉得是dp,然后一开始找状态没找对,发现递推公式写不出来,然后根据自己感觉能写出来的递推公式,一点一点改状态,最后得到合适的状态。定义mm[i]表示的是i个字符且前两个字母是mm时,满足要求的队列的数量modn。mf,ff,fm以此类推。

递推公式:

mm[i]=mm[i-1]+mf[i-1];

mf[i]=ff[i-1]+fm[i-1];

fm[i]=mm[i-1];

ff[i]=fm[i-1];


因为要求数列最长的长度就需要知道之前的每一段长度,所以mm[0]mm[end]都要遍历一遍,所以选择了递推。

由于数据变大会很快,一开始是每循环一次都要取余,然后超时了。改成循环十次取余过去了。

后来去网上查了题解,发现了其他的状态转移方程:Fn = Fn-1+ Fn-3+ Fn-4);

 

另外在查题解的时候,发现了一种新的算法好像叫“快速矩阵幂”,好像可以优化速度,有时间仔细读一些,专门写一篇理解吧。


0 0
原创粉丝点击