2024CCPC网络赛题目(二)包含D J E
D 编码器-解码器
解题思路
考虑每次迭代,每次实则就是用一个本身去更新自己,再用一个字符去进行更新(中间的字符)
那么可以使用区间dp,使得更新后能将进行到i个字符时t字符串中所有的区间情况找到。
没学过区间dp的可以看区间dp链接
在迭代时,只需要使用区间合并的方式,将两个相同性质的区间合并即可,分配的方案数显然已经确立
对于新增加的字符,正常dp处理即可。
值得注意的是,由于需要使用自身对自进行dp,所以不用继承之前的影响
∑ j = 1 m ∑ k = j m ∑ c = j − 1 k − 1 { d p [ i ] [ j ] [ k ] = ( d p [ i ] [ j ] [ k ] + d p [ i − 1 ] [ j ] [ c ] ∗ d p [ i − 1 ] [ c + 1 ] [ k ] ) ; , ( d p [ i ] [ j ] [ k ] + = d p [ i − 1 ] [ j ] [ c ] ∗ d p [ i − 1 ] [ c + 2 ] [ k ] ∣ 当 s 1 [ i ] = = s 2 [ c + 1 ] 时 ) \sum_{j=1}^{m}\sum_{k=j}^{m}\sum_{c=j-1}^{k-1}\begin{cases}dp[i][j][k] = (dp[i][j][k]+dp[i-1][j][c]*dp[i-1][c+1][k]); \\, (dp[i][j][k]+=dp[i-1][j][c]*dp[i-1][c+2][k]|当s1[i]==s2[c+1]时)\end{cases} j=1∑mk=j∑mc=j−1∑k−1{
dp[i][j][k]=(dp[i][j][k]+dp[i−1][j][c]∗dp[i−1][c+1][k]);,(dp[i][j][k]+=dp[i−1][j][c]∗dp[i−1][c+2][k]∣当s1[i]==s2[c+1]时)

最低0.47元/天 解锁文章
5620

被折叠的 条评论
为什么被折叠?



