询问能否从$S$中找到不重复的两个子序列$t1+t2=T$。$|S|,|T|\leq 400$
考虑$n^3$的算法,枚举$t1,t2$的分界线。
设$dp[i][j]$,匹配到$t1,i$长度,匹配到$t2,j$长度。此时到$S$的长度。
$dp[i+1][j]=min(d[i+1][j],pos[dp[i][j]][t1[i+1]])$。
$dp[i][j+1]=min(d[i][j+1],pos[dp[i][j]][t1[j+1]])$。
$pos[i][j]$表示$i$后面下一个$j$的位置。
- 显然$dp[i][j]$越小越好,$dp[i][j]$一定是按照某种顺序转移过来,所以不存在$t1,t2$选到重复。
代码
1 |
|