线性 DP。

不难想到 $dp_{i,j}$ 代表在 $a$ 中前 $i$ 个数和 $b$ 中前 $j$ 个数满足要求。

状态转移方程是:

边界:

  1. 如果 $i=m$,$dp_{i,j+1}=\min{dp_{i,j}}$。
  2. 如果 $j=n$,$dp_{i+1,j}=\min{dp_{i,j}}$。

之后:

  1. $a_{i+1}=b_{j+1}$ 或者 $a_{i+1}=1$ 或者 $b_{j+1}=1$,$dp_{i+1,j+1}=\min{dp_{i,j}}$。

最后 $dp_{i+1,j}=\min{dp_{i,j}+1},dp_{i,j+1}=\min{dp_{i,j}+1}$。

代码楼上楼下都已经写的很明白了,我就不在赘述了。