题解 CF1239E Turtle

这个是结论题。

显然第 $a_{1,1}$ 和 $a_{2,n}$ 放最小的两个值最好,因为它们必经。

第一个结论,若不交换两行间的元素,即每个元素已被确定在哪一行,则 $a_{1,i}\le a_{1,i+1},a_{2,i}\ge a_{2,i+1}$,理由是对于 $i<j,a_{1,i}>a_{1,j}$,交换 $i,j$ 一定是更优的。

第二个结论,答案的折点只会在第 $1$ 列或第 $n$ 列。

反证法,若答案折点在第 $i$ 列,其中 $i\in(1,n)$,则它一定比第 $i-1$ 和 $i+1$ 列优,可得 $a_{1,i}> a_{2,i-1},a_{2,i}> a_{1,i+1}$。由结论一得 $a_{2,i}\ge a_{2,i+1}$,所以 $a_{1,i}> a_{2,i-1}\ge a_{2,i}> a_{1,i+1}$,又 $a_{1,i}\le a_{1,i+1}$,矛盾,命题得证。

于是将剩下 $2n-2$ 个数分成两组,使元素和较大那组的和尽量小。这是经典的背包问题,$vis_{i,j,k}$ 表示考虑到第 $i$ 个数,第一行被填了 $j$ 个,第一行的和为 $k$ 的情况是否存在。转移方程为 $vis_{i,j,k}=vis_{i-1,j,k}\operatorname{or} vis_{i-1,j-1,k-a_i}$。

这样的时空复杂度是 $O(n^3k)$ 的,注意转移过程可以用 bitset 优化,时空复杂度优化为 $O(\frac{n^3k}{w})$。

posted @ 2023-08-08 14:33  Terac  阅读(5)  评论(0)    收藏  举报  来源