[P2900 USACO08MAR] Land Acquisition G - 洛谷 (luogu.com.cn).
启示:支配性质。dp 编号可以不连续的解决方案。
题目描述
Farmer John 准备扩大他的农场,眼前他正在考虑购买 \(N\) 块长方形的土地。
如果 FJ 单买一块土地,价格就是土地的面积。但他可以选择并购一组土地,并购的价格为这些土地中最大的长乘以最大的宽。比如 FJ 并购一块 \(3 \times 5\) 和一块 \(5 \times 3\) 的土地,他只需要支付 \(5 \times 5=25\) 元, 比单买合算。
FJ 希望买下所有的土地。他发现,将这些土地分成不同的小组来并购可以节省经费。 给定每份土地的尺寸,请你帮助他计算购买所有土地所需的最小费用。
解法
思考1:这个题没有要求必须是编号连续的土地才能合并,说明不能直接 dp,但是如果是枚举子集,也就是用状压的话,复杂度明显炸缸。没想到其他不从下标设dp状态的方法。也许是有什么性质,导致可以一个一个地考虑土地。可能要排序。可能是贪心。尝试按照某一维排序,例如宽度。
【没前途的想法,但有启示】按照宽度排序。发现 i 以前的数的宽度就不会造成贡献了。这时候把 dp 第二维设为 j ,表示长度小于 j 的矩形统统要合并。所以 dpij 等于 i * j 加上[i - 1 之前不选小于 j 的土地的答案], 开始的时候以为 dp 方程是 \(dp_{i,j}=i*j+dp_{i-1,n}-dp_{i-1,j}\),然后发现 \(dp_{i-1,j}=(i-1)*j+dp_{i-2,n}-dp_{i-2,j}\). 于是把 \(dp_{i-1,j}\) 换掉,然后一直换,最后就只和之前 dp 的第 n 项和 dp1的每一项有关了。于是就对了。但是 \(dp_{i-1,n}-dp_{i-1,j}\) 根本不是[i - 1 之前不选小于 j 的土地的答案],而且那些 j 小于宽的项没有实际含义,不太清楚行不行。所以要换一种写法。
思考2:发现如果一个土地长和宽都小于某一个土地,那这个矩形一定没用,就是被大矩形支配了。所以先按宽度排序,把被支配的矩形跳过,那么这写矩形的长度一定是递减的!所以第二维就不用设出来。dp 方程也很好写:\(dp_i = \max{dp_j + w_i*l_j}\) 这是一个斜率优化的标准式子。甚至单调队列就可以维护了。用斜率优化的套路即可。
\(y = kx + b\), \(b = y - kx\)。 把\((-l_j,dp_j)\) 当做平面上的点 \(w_i\) 当成斜率,w 单增。
搞出来大概就是这么一张图。