首页 > 其他 > 详细

【NOIP2015】子串

时间:2019-06-24 21:11:43      阅读:106      评论:0      收藏:0      [点我收藏+]

一道不怎么简单的dp题

我们定义状态f[i][j][k][val](其中val∈{0,1})表示A串的前i个字符,分成k段,与B串的前j个字符匹配,并且A[i]选/不选的方案数。

那么我们考虑状态的转移,

当a[i]==b[j]时,f[i][j][k][1]可以从f[i-1][j-1][k-1][0],f[i-1][j-1][k][1],f[i-1][j-1][k-1][1]三个状态转移而来;f[i][j][k][0]可以从f[i-1][j][k][1],f[i-1][j][k][0]两个状态转移而来。

当a[i]!=b[j]时,f[i][j][k][1]=0,f[i][j][k][0]可以从f[i-1][j][k][1],f[i-1][j][k][0]转移而来

由于阶段i由且仅由i-1阶段转移而来,所以我们采用滚动数组优化空间,仅存i和i-1两个阶段即可。

【NOIP2015】子串

原文:https://www.cnblogs.com/shl-blog/p/11079112.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!