[题目链接]

https://www.lydsy.com/JudgeOnline/problem.php?id=1597

[算法]

首先将所有土地按长为第一关键字 , 宽为第二关键字排序

显然 , 当i > j , 且yi >= yj时 , 土地j没有用 , 不妨使用单调栈弹出所有没有用的土地

用fi表示前i块土地的最小经费

显然 , fi = min{ fj + aibj }

斜率优化即可

时间复杂度 : O(N)

[代码]

#include<bits/stdc++.h>
using namespace std;
#define N 50010
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
const ll inf = 1e18; struct info
{
ll x , y;
} a[N]; ll n , l , r , top;
ll f[N];
ll q[N] , X[N] , Y[N] , s[N]; template <typename T> inline void chkmax(T &x,T y) { x = max(x,y); }
template <typename T> inline void chkmin(T &x,T y) { x = min(x,y); }
template <typename T> inline void read(T &x)
{
T f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
inline bool cmp(info a , info b)
{
if (a.x != b.x) return a.x < b.x;
else return a.y < b.y;
} int main()
{ read(n);
for (int i = ; i <= n; i++)
{
read(a[i].x);
read(a[i].y);
}
sort(a + , a + n + , cmp);
for (int i = ; i <= n; i++)
{
while (top > && a[i].y >= a[s[top]].y) --top;
s[++top] = i;
}
for (int i = ; i < top; i++)
X[i] = -a[s[i + ]].y;
q[f[l = r = ] = ] = ;
for (int i = ; i <= top; i++)
{
while (l < r && Y[q[l + ]] - Y[q[l]] <= a[s[i]].x * (X[q[l + ]] - X[q[l]])) ++l;
f[i] = f[q[l]] - a[s[i]].x * X[q[l]];
Y[i] = f[i];
while (l < r && (Y[i] - Y[q[r]]) * (X[q[r]] - X[q[r - ]]) <= (Y[q[r]] - Y[q[r - ]]) * (X[i] - X[q[r]])) --r;
q[++r] = i;
}
printf("%lld\n" , f[top]); return ; }

[USACO 2008 MAR] 土地购买的更多相关文章

  1. BZOJ 1597: [Usaco2008 Mar]土地购买 [斜率优化DP]

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4026  Solved: 1473[Submit] ...

  2. 1597: [Usaco2008 Mar]土地购买

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4023  Solved: 1470[Submit] ...

  3. 【斜率DP】bzoj1597: [Usaco2008 Mar]土地购买

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2474  Solved: 900[Submit][ ...

  4. 【BZOJ 1597】 [Usaco2008 Mar]土地购买 (斜率优化)

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3601  Solved: 1322 Descrip ...

  5. BZOJ 1597: [Usaco2008 Mar]土地购买( dp + 斜率优化 )

    既然每块都要买, 那么一块土地被另一块包含就可以不考虑. 先按长排序, 去掉不考虑的土地, 剩下的土地长x递增, 宽y递减 dp(v) = min{ dp(p)+xv*yp+1 } 假设dp(v)由i ...

  6. BZOJ 1597: [Usaco2008 Mar]土地购买【斜率优化+凸包维护】

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4989  Solved: 1847[Submit] ...

  7. bzoj1597[Usaco2008 Mar]土地购买 斜率优化dp

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 5524  Solved: 2074[Submit] ...

  8. 【bzoj1597】[Usaco2008 Mar]土地购买

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3739  Solved: 1376[Submit] ...

  9. 【bzoj1597- [Usaco2008 Mar]土地购买】斜率优化

    [597][Usaco2008 Mar]土地购买 [题目描述] 有N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足(1 <= 宽 <= 1,000 ...

随机推荐

  1. 从头写一个Cucumber测试(二) Cucumber Test

    转载:https://yaowenjie.github.io/%E7%BC%96%E7%A8%8B%E7%9B%B8%E5%85%B3/cucumber-test-part-2 承接上文   前一篇博 ...

  2. linux 设置ssh密钥登录

    一.查看服务器上是否开启了sshd服务 要确认linux是不是安装了和开启了ssh服务可以输入 netstat -an|grep 22,查看22端口是否打开,如果找开,则证明SSH服务开启了. ps ...

  3. 初涉IPC,了解AIDL的工作原理及用法

    初涉IPC,了解AIDL的工作原理及用法 今天来讲讲AIDL.这个神奇的AIDL,也是近期在学习的,看了某课大神的解说写下的blog,希望结合自己的看法给各位同价通俗易懂的解说 官方文档:http:/ ...

  4. C++11 并发指南三(std::mutex 详解)(转)

    转自:http://www.cnblogs.com/haippy/p/3237213.html 上一篇<C++11 并发指南二(std::thread 详解)>中主要讲到了 std::th ...

  5. python(4)- 简单练习:python实现购物车的优化

    购物车程序优化题目要求: 1. 用户退出时打印商品列表时,按以下格式 -------您购买的商品如下------ id    商品    数量    单价    总价 1      iPhone 2  ...

  6. WeX5开发指南

    WeX5入门.UI2开发.App开发.服务端开发.扩展资料学习. 1 新手入门 1.1 运行WeX5的demo(视频) 1.2 App开发.调试.打包部署完整过程(视频) 1.3 创建第一个应用(视频 ...

  7. 【转载】读懂IL代码就这么简单(三)完结篇

    一 前言 写了两篇关于IL指令相关的文章,分别把值类型与引用类型在 堆与栈上的操作区别详细的写了一遍这第三篇也是最后一篇,之所以到第三篇就结束了,是因为以我现在的层次,能理解到的都写完了,而且个人认为 ...

  8. HTML5开发移动web应用—JQuery Mobile(1)

    JQuery Mobile是一个简单易用的web移动app开发框架.使用它就像使用jQuery一样,引入必要的文件就可以. 最基础的jQuery Mobile文件的结构代码例如以下: <body ...

  9. 使用EA生成多层次的代码框架

    最近工作期间发现了一个非常棒的UML软件[Enterprise Architect UML 建模工具]简称EA,在该软件上绘制框架层面的类之间关系后,可以自动生成相关语言的代码. EA上目前支持的语言 ...

  10. git+jenkins

    开发写代码的演变 一个开发单打独斗,撸代码,开发网站,自由自在 多个开发同时开发一个网站,同时改一份代码.但是同时改一个文件会导致冲突 分支结构,每天上班第一件事克隆代码,下班前最后一件事合并代码 好 ...