CF1363F Rotating Substrings

题解:

$n\leq 2000$ ,考虑$O(n^2)$的算法

n^2的解决字符串问题大概率要使用Dp,由于要进行两个字符串的匹配,那么我们试图设$dp[i][j]$表示s串的前i位与t串的前j位匹配的最小代价

怎么进行状态转移?

胡乱搞一搞

规定$i < j$,由于一次操作是把一个数扔到一个数的前面

所以$dp[i][j]=dp[i-1][j]+1$(如果第i个位置与$t_1$~$t_j$都不匹配,那么最优解应该是将这个字符后面的字符都往前扔,而不对他进行操作,所以这种情况出现时这种状态一定不会转移到最终的最优解中)

然后如果s[i]=t[j],那么dp[i][j]也可以通过dp[i-1][j-1]转移过来

当t[j]是从i后面扔过来的时候dp[i][j]=dp[i][j-1]而这一次扔过来的代价将会在第一种转移中计算

但是为了能转移到第一种状态,那么一定要保证这个数一定是后面匹配时富余出来的

然后就结束了

posted @ 2021-01-09 11:42  niolle  阅读(79)  评论(0编辑  收藏  举报