考虑一个 dp,设 fk,i,jf_{k, i, j} 表示目前填了 0k0 \sim k,这些数最左的在 ii,最右的在 jj。发现每次新填入 k+1k + 1,填的位置不可能在 [i,j][i, j] 内,因为这样就不存在 mex=k+1\operatorname{mex} = k + 1 的区间了。所以,k+1k + 1 只能填在 i1,j+1i - 1, j + 1 其中之一位置,否则就留出了不能填的空隙,导致后填的数位置不足。

于是填下的位置一定是连续的一段,即 k=jik = j - i,我们就可以省略 kk,转移显然:

fi,i=[i>L0niL0]fi,j=[j>Lk]fi,j1+[niLk]fi+1,j(i<j)f_{i, i} = [i > L_0 \vee n - i \ge L_0]\\ f_{i, j} = [j > L_k]f_{i, j - 1} + [n - i \ge L_k]f_{i + 1, j} (i < j)

时间复杂度为 O(n2)O(n^2),代码略。