题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1597

分析:

1、先可以把被包含的土地可以去掉,这些土地的长宽肯定都是不会用的,具体先把他们按照长从小到大排序,然后从后往前扫,如果后面的某个宽比前面宽大,那么就把这个土地给去掉。然后出来的土地的排序就是从前到后长递增,宽递减。

2、这个时候从贪心的思想可以知道取几块土地一起搞,那么这些土地肯定是连一块的。因为如果不连一块,可以把他们中间没取的土地也取了,不会改变结果,但显然对更优。所以我们就可以DP了,f[i]=min{f[j]+b[i]*a[j+1]}

3、对上面的式子斜率优化:

设x=a[j+1],y=f[j],k=b[i],z=f[i]

那么就相当于平面上有一些点(x,y),然后要使得Z=kx+y最小

显然的线性规划:写成y=-kx+Z

易得使其最小的点肯定在平面上这些点的凸包上,并且注意到-k=-b[i]是单增的,所以直线越来越平缓,所以决策是单调递增的。

所以总的复杂度O(n)

当然上面的式子也可以四边形优化

设w[j,i]=b[i]*a[j+1]

那么只要证明w[j,i]+w[j+1,i+1]<=w[j+1,i]+w[j,i+1]即可

这个稍微化简就可以知道是成立了

也就是说决策单调,于是O(nlogn)

不过当然复杂度还是第一个比较好,但第二个也可以过

05-11 21:52