luogu P2900 [USACO08MAR]土地征用Land Acquisition

时间:2021-12-06 21:20:21

写这道题时,预处理部分少打了等号,吓得我以为斜率优化错了或者被卡精了 mmp

首先有一个很明显的结论(逃),就是一个土地如果长(\(x\))与宽(\(y\))都比另一个土地小,那么这个土地一定可以跟那另一个一起买,所以这样被包含的土地不会贡献答案.我们只要把长作为第一关键字,宽作为第二关键字,从小到大排个序,然后被包含的土地去掉.这样就剩下一堆\(x\)递增,\(y\)递减的土地.

容易列出转移方程$$f_i=min(f_j+x_iy_{j+1})$$

然而数据范围有50000,n方过不去

发现这题可以用斜率优化,把$$f_j+x_iy_{j+1}<f_k+x_iy_{k+1}$$推一推得到$$x_i<\frac{f_k-f_j}{y_{j+1}-y_{k+1}}$$

然后,,,你懂的

#include<bits/stdc++.h>
#define LL long long
#define il inline
#define re register
#define db double
#define max(a,b) ((a)>(b)?(a):(b)) using namespace std;
const int N=50000+10;
il LL rd()
{
re LL x=0,w=1;re char ch=0;
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
struct nn
{
LL x,y;
}a[N],b[N];
bool ccmp(nn a,nn b){return a.x!=b.x?a.x<b.x:a.y<b.y;}
int n,m;
LL f[N];
db K(int i,int j){return (db)(f[j]-f[i])/(db)(b[i+1].y-b[j+1].y);} int main()
{
n=rd();
for(re int i=1;i<=n;i++) a[i].x=rd(),a[i].y=rd();
sort(a+1,a+n+1,ccmp);
for(re int i=1;i<=n;i++)
{
while(m>0&&a[i].y>=b[m].y) --m;
b[++m]=a[i];
}
int q[N],hd=1,tl=1;q[1]=0;
for(re int i=1;i<=m;i++)
{
while(hd<tl&&K(q[hd],q[hd+1])<=b[i].x) ++hd;
f[i]=f[q[hd]]+b[i].x*b[q[hd]+1].y;
while(hd<tl&&K(q[tl],q[tl-1])>=K(i,q[tl-1])) --tl;
q[++tl]=i;
}
printf("%lld\n",f[m]);
return 0;
}

luogu P2900 [USACO08MAR]土地征用Land Acquisition的更多相关文章

  1. 洛谷 P2900 &lbrack;USACO08MAR&rsqb;土地征用Land Acquisition 解题报告

    P2900 [USACO08MAR]土地征用Land Acquisition 题目描述 约翰准备扩大他的农场,眼前他正在考虑购买N块长方形的土地.如果约翰单买一块土 地,价格就是土地的面积.但他可以选 ...

  2. 洛谷P2900 &lbrack;USACO08MAR&rsqb;土地征用Land Acquisition(动态规划,斜率优化,决策单调性,线性规划,单调队列)

    洛谷题目传送门 用两种不一样的思路立体地理解斜率优化,你值得拥有. 题意分析 既然所有的土地都要买,那么我们可以考虑到,如果一块土地的宽和高(其实是蒟蒻把长方形立在了平面上)都比另一块要小,那么肯定是 ...

  3. 洛谷P2900 &lbrack;USACO08MAR&rsqb;土地征用Land Acquisition(斜率优化)

    题意 约翰准备扩大他的农场,眼前他正在考虑购买N块长方形的土地.如果约翰单买一块土 地,价格就是土地的面积.但他可以选择并购一组土地,并购的价格为这些土地中最大的长 乘以最大的宽.比如约翰并购一块3 ...

  4. P2900 &lbrack;USACO08MAR&rsqb;土地征用Land Acquisition

    \(\color{#0066ff}{ 题目描述 }\) 约翰准备扩大他的农场,眼前他正在考虑购买N块长方形的土地.如果约翰单买一块土 地,价格就是土地的面积.但他可以选择并购一组土地,并购的价格为这些 ...

  5. Luogu 2900 &lbrack;USACO08MAR&rsqb;土地征用Land Acquisition

    斜率优化dp. 首先发现如果存在$x$和$y$使得$len(x) \geq len(y)$并且$wid(x) \geq wid(y)$,那么$y$直接不考虑就好了,因为在买$x$的时候就把$y$顺便带 ...

  6. 【洛谷 P2900】 &lbrack;USACO08MAR&rsqb;土地征用Land Acquisition(斜率优化,单调栈)

    题目链接 双倍经验 设\(H\)表示长,\(W\)表示宽. 若\(H_i<H_j\)且\(W_i<W_j\),显然\(i\)对答案没有贡献. 于是把所有点按\(H\)排序,然后依次加入一个 ...

  7. &lbrack;LuoguP2900&rsqb; &lbrack;USACO08MAR&rsqb;土地征用&lpar;Land Acquisition&rpar;

    土地征用 (Link) 约翰准备扩大他的农场,眼前他正在考虑购买N块长方形的土地.如果约翰单买一块土 地,价格就是土地的面积.但他可以选择并购一组土地,并购的价格为这些土地中最大的长 乘以最大的宽.比 ...

  8. &lbrack;USACO08MAR&rsqb;土地征用Land Acquisition

    题面在这里 题意 约翰准备扩大他的农场,眼前他正在考虑购买N块长方形的土地. 如果约翰单买一块土地,价格就是土地的面积,但他可以选择并购一组土地, 并购的价格为这些土地中最大的长乘以最大的宽. 给定每 ...

  9. 洛谷2900 &lbrack;USACO08MAR&rsqb;土地征用Land Acquisition (斜率优化&plus;dp)

    自闭的一批....为什么斜率优化能这么自闭. 首先看到这个题的第一想法一定是按照一个维度进行排序. 那我们不妨直接按照\(h_i\)排序. 我们令\(dp[i]\)表示到了第\(i\)个矩形的答案是多 ...

随机推荐

  1. Why Do We Need a Data Warehouse&quest;

    https://dwbi1.wordpress.com/2012/12/03/why-do-we-need-a-data-warehouse/ 经常有人来质疑数据仓库的价值,为什么我们需要花费一年多的 ...

  2. DP4J -- mnist

    标签(空格分隔): DeepLearning mnist mnist是一个数据集,其中包含很多手写数字的图片,每张图片都已经打上了label: Deep Learning 传统的机器学习神经网络由一层 ...

  3. 基本变换&lpar;读书笔记5 --- Real-Time rendering&rpar;

    刚体变换 即变换不改变了被变换顶点之间的距离,以及偏手性(不会让左右手坐标系颠倒). 下面的平移变换.旋转变换即属于刚体变换 平移 从一个位置变到另一个位置可以用平移矩阵T来表示,这个矩阵将一个实体变 ...

  4. SQL&lpar;Oracle)

    http://blog.csdn.net/winter13292/article/details/7011377 SQL 对大小写不敏感!  在 SQL 中增加 HAVING 子句原因是,WHERE ...

  5. 个性化定制——物流app

    众所周知,在互联网不断迈进的大环境下,各行各业都不免在这大潮下纷纷卷入.人们早已不再满足于传统行业,即便是所谓的新兴行业所带来的体验,他们更多的希望能够在便捷的基础上获取更加个性化的服务,个性化服务在 ...

  6. 创建简单的响应式HTML5模版

    创建简单的响应式HTML5模版 HTML5目前发展势头良好,已经逐渐得到大部分浏览器不同程度的支持.许多web开发者也已经学习到了不少关于HTML 5的基础知识并开始试图使用HTML 5制作网页.与此 ...

  7. &period;Net Core的一些个人总结

    从开始接触.Net Core到现在已经有将近一年的时间了,今天来做一下相关的学习总结,顺便也回忆一下自己这段时间以来的成长. 有一点不得不承认的是,在接触.Net Core之前,我对于linux系统一 ...

  8. CC2530微处理器接口开发技术——信号灯的设计与实现

    本问主要介绍了CC2530处理器的通用输入/输出接口(GPIO),以及GPIO的位操作,理解GPIO的基本原理和功能,最后使用C语言驱动CC2530的GPIO实现对信号灯的控制. CC2530的GPI ...

  9. InnoDB中锁的算法&lpar;3&rpar;

    Ⅰ.隐式锁vs显示锁 session1: (root@localhost) [test]> show variables like 'tx_isolation'; +-------------- ...

  10. JS判断元素是否在数组内

    //判断元素是否在数组内 function contains(arr, obj) { var i = arr.length; while (i--) { if (arr[i] === obj) { r ...