2012年9月18日
摘要: HDU_4295 可以用f[i][j][k]表示递推到S的第i个字符时,选取的字符串的集合为k(用二进制表示),从当前字符开始向后已经覆盖了长度j的字符。 在这里不妨只讨论最小覆盖长度,最大覆盖长度类似。为了方便dp所以选用刷表的方式,首先令f[i][0][0]为0,接着对于任意一个f[i][j][k],实际上有两种决策,一种是当前这个位置什么也不放就过度到下一个字符,那么就有f[i+1][j-1][k]=std::min(f[i+1][j-1][k],f[i][j][k]),另一种就是从当前位置开始放上字符串t,这时要稍稍讨论一下,因为字符串t的长度可能会影响状态j,也就是从当前字符开始.. 阅读全文
posted @ 2012-09-18 21:57 Staginner 阅读(328) 评论(0) 推荐(0) 编辑