Description

农夫John准备扩大他的农场,他正在考虑N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足(1 <= 宽 <= 1,000,000; 1 <= 长 <= 1,000,000). 每块土地的价格是它的面积,但FJ可以同时购买多快土地. 这些土地的价格是它们最大的长乘以它们最大的宽, 但是土地的长宽不能交换. 如果FJ买一块3×5的地和一块5×3的地,则他需要付5×5=25. FJ希望买下所有的土地,但是他发现分组来买这些土地可以节省经费. 他需要你帮助他找到最小的经费.

Solution

思路是斜率优化,首先,对于两个土地i,j,如果X[j]<=X[i]&&Y[j]<=Y[i]那么可以直接把土地i排除掉

开始时把土地按X为第一关键字,Y为第二关键字升序排序,

\(dp[i]=min\{dp[j]+y[j+1]*x[i]\}\)

搞个斜率优化\(\frac{dp[j]-dp[k]}{y[j+1]-y[k+1]}>-x[i]\)

Code

#include <cstdio>
#include <algorithm>
#define N 50010
using namespace std; struct info{
int x,y;
friend bool operator < (info a,info b){
return a.x<b.x||(a.x==b.x&&a.y<b.y);
}
}A[N];
int n,cnt,l,r,q[N];
long long dp[N]; inline int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
} double slope(int k,int j){
return (1.0*(dp[j]-dp[k]))/(A[j+1].y-A[k+1].y);
} void DP(){
l=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++;
int j=q[l];
dp[i]=dp[j]+A[j+1].y*1ll*A[i].x;
while(l<r&&slope(q[r],i)>slope(q[r-1],q[r])) r--;
q[++r]=i;
}
} int main(){
n=read();
for(int i=1;i<=n;++i) A[i].x=read(),A[i].y=read();
sort(A+1,A+n+1);
for(int i=1;i<=n;++i){
if(A[i].y<=A[i+1].y) continue;
while(cnt&&A[cnt].y<=A[i].y) cnt--;
A[++cnt]=A[i];
}n=cnt;
DP();
printf("%lld\n",dp[n]);
return 0;
}

[BZOJ1597][Usaco2008 Mar]土地购买(斜率优化)的更多相关文章

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

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

  2. [Bzoj1597][Usaco2008 Mar]土地购买(斜率优化)

    题目链接 因为题目说可以分组,并且是求最值,所以斜率优化应该是可以搞的,现在要想怎么排序使得相邻的数在一个组中最优. 我们按照宽$w$从小到大,高$h$从小到大排序.这时发现可以筛掉一些一定没有贡献的 ...

  3. bzoj1597 [Usaco2008 Mar]土地购买——斜率优化DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1597 就是斜率优化水题... 然而WA了十几遍,正负号处理真让人心累... 还是该负就负,别 ...

  4. BZOJ1597: [Usaco2008 Mar]土地购买——斜率优化

    题目大意: 将$n$个长方形分成若干部分,每一部分的花费为部分中长方形的$max_长*max_宽$(不是$max_{长*宽}$),求最小花费 思路: 首先,可以被其他长方形包含的长方形可以删去 然后我 ...

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

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

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

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MB Description 农夫John准备扩大他的农场,他正在考虑N ...

  7. bzoj 1597 [Usaco2008 Mar]土地购买——斜率优化dp

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1597 又一道斜率优化dp.负数让我混乱.不过仔细想想还是好的. 还可以方便地把那个负号放到x ...

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

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

  9. [bzoj1597][usaco2008 mar]土地购买 (动态规划+斜率优化)

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

随机推荐

  1. C#字符串自增自减算法

    本文URL:http://www.cnblogs.com/CUIT-DX037/p/6770535.html 实现字符串自增和自减运算: 1.数字从 0-9 变化: 2.字母从 A-Z.a-z 变化: ...

  2. Morris.js-利用JavaScript生成时序图

    morris.js是一个轻量级的时间序列javascript类库,是网页显示图表的好工具.github项目地址:点击打开,使用起来很简单,但是需要你有一点网页设计的一些基本知识,对一个网页内容的结构要 ...

  3. mui蒙版使用例子

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <meta name=& ...

  4. 爱加密so保护简单脱壳测试

    1.   最近研究so文件的保护,在网上搜索发现爱加密支持对so文件的保护,然后联系客户,本来是想让客户保护一个自己的so文件来做测试的,结果客户各种不愿意,说要签什么XX协议后才能给so保护,各种蛋 ...

  5. Unity3d 游戏中集成Firebase 统计和Admob广告最新中文教程

    之前写过俩相关的教程,最近发现插件官方更新了不少内容,所以也更新一篇Firebase Admob Unity3d插件的教程,希望能帮到大家. Firebase Admob Unity3d插件是一个Un ...

  6. Riverbed SteelHead 9.5.0

    平台: scientific linux release 6.5 类型: 虚拟机镜像 软件包: riverbed steelhead 9.5.0 basic software Enterprise i ...

  7. mybatis-动态sql1

    在多条件查询的情况下必须用到动态sql 沿用之前的项目 1.在dao中添加多添件查询方法 package com.java1234.mappers; import java.util.List;imp ...

  8. LeetCode Add Two Numbers 两个数相加

    /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...

  9. 【转】Nginx搭建反向代理服务器过程详解

    阅读目录 1.1 反向代理初印象 1.2 反向代理的作用 2.1 Nginx是神马? 2.2 Nginx的应用现状 2.3 Nginx的核心特点 3.1 准备一个ASP.NET网站部署到IIS服务器集 ...

  10. Hybrid App开发之css样式使用

    前言: 前面学习了html,今天学习一下css的基本使用,看下html与css之间是如何结合来编写前端网页的. CSS 是什么? CSS 是 Cascading Style Sheets(级联样式表) ...