这题一眼DP,但是题目没说必须要连续划分,而这种序列DP是肯定要连续划分的,所以我们要用贪心啥的改变一下序列的顺序然后进行连续划分
我们发现,如果一个长方形的长和宽都小于等于另一个长方形的长和宽,那么这个长方形是可以完全不用考虑的。因为对任意一种方案,我们都可以把这个长方形放在另一个长方形所在的组别(如果这两个长方形不在同一个组的话)而不影响答案
所以我们以长为第一关键字,宽为第二关键字排序,然后用双指针扫一遍,剩下的长方形的长一定单调递减,宽一定单调递增
然后我们就可以猜测此时可以连续划分了
证:如果有一种方案不连续,我们假设\([1,l]\)都是第一组,然后\([l+1,r]\)不是第一组(可能是第二组第三组等等的混合),然后第\(r+1\)个是第一组的,那么我们将\([l+1,r]\)的长方形全部放在第一组,答案不会更差。因为如果某一组全在\([l+1,r]\)中,那么这一组的费用在改变之后就不用计算了;如果某一组的开头在\([l+1,r]\)中但是结尾不在,那么这一组的开头在改变之后一定也会在\(r+1\)之后,而长度是单调递减的,所以这一组的费用也减少了
其实我最开始证明的时候想的是利用冒泡排序交换,但是这里启发我们,不要一直想着交换,如果可以自由分配组别的话,可以考虑直接改变组别
然后DP方程就很简单了,写出来就知道是斜率优化,而且方程也不难
这道题目就告诉我们,如果以后出现了这种二维属性的情况,考虑完全包含,并且用双指针扫过之后,两个属性一个递增一个递减
标签:Land,组别,一组,第一组,长方形,DP,我们,Acquisition From: https://www.cnblogs.com/dingxingdi/p/18049397