bzoj 1597 土地购买
生活随笔
收集整理的這篇文章主要介紹了
bzoj 1597 土地购买
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Description
農夫John準備擴大他的農場,他正在考慮N (1 <= N <= 50,000) 塊長方形的土地. 每塊土地的長寬滿足(1 <= 寬 < = 1,000,000; 1 <= 長 <= 1,000,000). 每塊土地的價格是它的面積,但FJ可以同時購買多快土地. 這些土地的價 格是它們最大的長乘以它們最大的寬, 但是土地的長寬不能交換. 如果FJ買一塊3x5的地和一塊5x3的地,則他需要 付5x5=25. FJ希望買下所有的土地,但是他發現分組來買這些土地可以節省經費. 他需要你幫助他找到最小的經費.Input
* 第1行: 一個數: N * 第2..N+1行: 第i+1行包含兩個數,分別為第i塊土地的長和寬Output
* 第一行: 最小的可行費用.
Sample Input
4100 1
15 15
20 5
1 100
輸入解釋:
共有4塊土地.
Sample Output
500FJ分3組買這些土地:
第一組:100x1,
第二組1x100,
第三組20x5 和 15x15 plot.
每組的價格分別為100,100,300, 總共500.
HINT
?
思路 :這個題目是一個斜率優化的dp,我們先把初始的土地預處理一下,讓土地的h遞增,w遞減,其他一些土地長寬都比某些土地小,這些土地是不會影響答案的。
然后我們設f[i]表示前i個土地的最小費用。
易證,f[i]=min(f[j]+h[i]*w[j+1]); 為了計算方便,將w數組錯一位,f[i]=min(f[j]+h[i]*w[j]); 考慮兩個轉移f[j],f[k],且k<j<i ; 若對于f[i]從f[j]轉移比從f[k]轉移更優,那么f[j]+h[i]*w[j]<f[k]+h[i]*w[k]; ?
根據線性規劃的知識和斜率的知識,我們維護一個斜率不斷減小的凸包,答案一定在凸包的點上。
?
轉載于:https://www.cnblogs.com/ZJXXCN/p/10212121.html
總結
以上是生活随笔為你收集整理的bzoj 1597 土地购买的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Numpy函数分类
- 下一篇: vue使用echarts可视化图形插件