http://www.lydsy.com/JudgeOnline/problem.php?id=1597 (题目链接)

题意

  购买n个矩形,每块土地的价格是它的面积,但可以同时购买多快土地. 这些土地的价格是它们最大的长乘以它们最大的宽,求最少花费。

Solution

  按照x单增,y单减排序,将可以相互包含的矩形去掉,易证每组在连续一段最优。

细节

  。。

代码

// bzoj1597
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define inf 1e18
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std; const int maxn=50010;
struct data {LL x,y;}a[maxn];
LL f[maxn];
int n,q[maxn]; bool cmp(data a,data b) {
return a.x==b.x ? a.y<b.y : a.x<b.x;
}
double slope(int i,int j) {
return (double)(f[i]-f[j])/(double)(a[i+1].y-a[j+1].y);
}
int main() {
scanf("%d",&n);
for (int i=1;i<=n;i++) scanf("%lld%lld",&a[i].x,&a[i].y);
sort(a+1,a+1+n,cmp);
int tot=0;
for (int i=1;i<=n;i++) {
while (tot && a[i].y>=a[tot].y) tot--;
a[++tot]=a[i];
}
n=tot;
int l=1,r=1;q[1]=0;
for (int i=1;i<=n;i++) {
while (l<r && slope(q[l],q[l+1])>=-a[i].x) l++;
f[i]=f[q[l]]+a[i].x*a[q[l]+1].y;
while (l<r && slope(q[r-1],q[r])<slope(q[r],i)) r--;
q[++r]=i;
}
printf("%lld",f[n]);
return 0;
}

  

【bzoj1597】 土地购买的更多相关文章

  1. BZOJ1597土地购买 【斜率优化DP】

    BZOJ1597土地购买 [斜率优化DP] Description 农夫John准备扩大他的农场,他正在考虑N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足( ...

  2. BZOJ1597 土地购买 【dp + 斜率优化】

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 5466  Solved: 2035 [Submi ...

  3. [BZOJ1597]土地购买

    Description 农夫John准备扩大他的农场,他正在考虑N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足(1 <= 宽 <= 1,000, ...

  4. 【BZOJ-1597】土地购买 DP + 斜率优化

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

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

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

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

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

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

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

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

    东风吹战鼓擂第一题土地购买送温暖 ★★★   输入文件:acquire.in   输出文件:acquire.out   简单对比时间限制:1 s   内存限制:128 MB 农夫John准备扩大他的农 ...

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

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

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

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

随机推荐

  1. centos 命令集合

    链接: http://www.cnblogs.com/zitsing/archive/2012/05/02/2479009.html http://www.centoscn.com/CentOS/he ...

  2. 用 C# 轻松读取、改变文件的创建、修改、访问时间

    创建时间是文件存入到电脑中的时间,而修改时间则是改变起内容的最后时间 // 读取文件的创建.修改.访问时间FileInfo fi = new FileInfo("C://test.txt&q ...

  3. C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 独立子系统管理员功能实现

    1: 由于公司一次性要开发10多个子系统,每个子系统都需要有相关的业务部门进行对应.2: 若用集中式管理方式,每个业务部门人员变动,权限变动时,都需要早IT信息中心进行调整,影响工作效率.及时性.3: ...

  4. 建立mvc过程

    1.public class   dbContext:Dbcontext { private readonly static string CONNECTION_STRING="name=d ...

  5. hadoop:将WordCount打包成独立运行的jar包

    hadoop示例中的WordCount程序,很多教程上都是推荐以下二种运行方式: 1.将生成的jar包,复制到hadoop集群中的节点,然后运行 $HADOOP_HOME/bin/hadoop xxx ...

  6. mybatis 3.2.8 + log4j2.0.2 控制台输出sql语句

    mybatis3.2.7有一个bug,使用log4j2 (2.0.2)版本时,会找不到类 ,导致启动失败,详见 https://github.com/mybatis/mybatis-3/issues/ ...

  7. Java 集合与队列的插入、删除在并发下的性能比较

    这两天在写一个java多线程的爬虫,以广度优先爬取网页,设置两个缓存: 一个保存已经访问过的URL:vistedUrls 一个保存没有访问过的URL:unVistedUrls 需要爬取的数据量不大,对 ...

  8. Python2.6-原理之类和oop(下)

    来自<python学习手册第四版>第六部分 五.运算符重载(29章) 这部分深入介绍更多的细节并看一些常用的重载方法,虽然不会展示每种可用的运算符重载方法,但是这里给出的代码也足够覆盖py ...

  9. 从炉石传说的一个自杀OTK说起

    OTK就是one turn kill,不过这次我们要谈的OTK是自杀,对就是自己把自己给OTK了. 其实程序没有任何错误,只是恰巧碰上了这么个死循环. ps:文章最后有代码git地址 发动条件及效果: ...

  10. 知乎UWP 预览

    又是很久都没有写博客了,为了表达歉意,奉上一个新的App,O(∩_∩)O! 因为商店的知乎太多了,然而,,所以一直打算自己动手写一个. 近段时间有些假期加上课程不是很忙,抽时间写了这个知乎.商店链接 ...