题解 CF1239E Turtle

这个是结论题。

显然第 a1,1a2,n 放最小的两个值最好,因为它们必经。

第一个结论,若不交换两行间的元素,即每个元素已被确定在哪一行,则 a1,ia1,i+1,a2,ia2,i+1,理由是对于 i<j,a1,i>a1,j,交换 i,j 一定是更优的。

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

反证法,若答案折点在第 i 列,其中 i(1,n),则它一定比第 i1i+1 列优,可得 a1,i>a2,i1,a2,i>a1,i+1。由结论一得 a2,ia2,i+1,所以 a1,i>a2,i1a2,i>a1,i+1,又 a1,ia1,i+1,矛盾,命题得证。

于是将剩下 2n2 个数分成两组,使元素和较大那组的和尽量小。这是经典的背包问题,visi,j,k 表示考虑到第 i 个数,第一行被填了 j 个,第一行的和为 k 的情况是否存在。转移方程为 visi,j,k=visi1,j,korvisi1,j1,kai

这样的时空复杂度是 O(n3k) 的,注意转移过程可以用 bitset 优化,时空复杂度优化为 O(n3kw)

posted @   Terac  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示