Sol. CF1922F
考虑区间 DP。设 \(f(i,j,w)\) 表示区间 \([i,j]\),将其转换为 只含有 \(w\) 的最小操作次数。
然后发现这样做似乎是 \(O(n^4x)\) 的,考虑优化。
发现如果区间 \([i,j]\) 不含有 \(w\),那么只需要一次操作就可以变成区间内 只含有 \(w\)。
于是考虑令 \(g(i,j,w)\) 表示区间 \([i,j]\),将其转换为 不含有 \(w\) 的最小操作次数。
于是有:
\(g(i,i,w)= \left\{\begin{aligned} 1(a_i=w) \\ 0(a_i\ne w) \end{aligned}\right.\)
\(g(i,j,w) = \min(\min\limits_{k=i}^{j-1}\{g(i,k,w)+g(k+1,j,w)\},\min\limits_{k=1,k\ne w}^{x} \{g(i,j,k)+1\})\)
左边的公式应该很好理解,右边的 \(\min\limits_{k=1,k\ne w}^{x}\{g(i,j,k)+1\}\) 可以考虑一下,如果区间 \([i,j]\) 的数 全部不等于 \(k\),那么可以用一次修改将区间 \([i,j]\) 的数改成 \(k\),由于 \(k\ne w\),所以区间 \([i,j]\) 的数全部 \(\ne w\)。
现在也可以给出 \(f(i,j,w)\) 的公式了:
\(f(i,i,w)= \left\{\begin{aligned} 0(a_i=w) \\ 1(a_i\ne w) \end{aligned}\right.\)
\(f(i,j,w)=\min(\min\limits_{k=i}^{j-1}\{f(i,k,w)+f(k+1,j,w)\},g(i,j,w)+1)\)。
使用记忆化搜索或者其他神仙算法即可,时间复杂度 \(O(n^3x)\),由于时限给了 \(5\text{s}\),再加上区间 DP 大约 \(\dfrac{1}{4}\) 的常数,是可过的。

浙公网安备 33010602011771号