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


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

4
100 1
15 15
20 5
1 100

输入解释:

共有4块土地.

Sample Output

500

HINT

FJ分3组买这些土地:
第一组:100x1
第二组1x100
第三组20x5 和 15x15
每组的价格分别为100,100,300, 总共500.


第一次自己手推斜率优化,因为如果对于土地i和j其中满足x[i]<x[j]x[i]<x[j]x[i]且y[i]<y[j]y[i]<y[j]y[i],那么i土地可以成为j土地的附属品,所以有效的土地一定满足x递增y递减,一开始发现式子是O(n2)O(n2)O(n^2)的,f[i]=min(f[j]+y[j+1]∗x[i])f[i]=min(f[j]+y[j+1]∗x[i])f[i]=min(f[j]+y[j+1]*x[i]),然后斜率优化一下变成斜率表示(f[j]−f[k])/(y[k+1]−y[j+1])<x[i](f[j]−f[k])/(y[k+1]−y[j+1])<x[i](f[j]-f[k])/(y[k+1]-y[j+1]),然后维护一个下凸包,我们就可以飞快地跑出来了


#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define N 50010
inline LL read(){LL ans=0,w=1;char c=getchar();while(!isdigit(c)&&c!='-')c=getchar();if(c=='-')c=getchar(),w=-1;while(isdigit(c))ans=ans*10+c-'0',c=getchar();return ans*w;
}
LL n,cnt=0,f[N],q[N];
struct Node{LL x,y;}a[N],b[N];
bool cmp(Node a,Node b){if(a.x==b.x)return a.y<b.y;return a.x<b.x;
}
double get_k(LL t1,LL t2){return (double)(f[t1]-f[t2])/(b[t2+1].y-b[t1+1].y);
}
int main(){n=read();for(LL i=1;i<=n;i++)a[i].x=read(),a[i].y=read();sort(a+1,a+n+1,cmp);for(LL i=1;i<=n;i++){while(cnt&&a[i].y>=b[cnt].y)cnt--;b[++cnt].x=a[i].x;b[cnt].y=a[i].y;}LL l=0,r=0;for(LL i=1;i<=n;i++){while(l<r&&get_k(q[l],q[l+1])<b[i].x)l++;LL t=q[l];f[i]=f[t]+b[t+1].y*b[i].x;while(l<r&&get_k(q[r],i)<get_k(q[r-1],q[r]))r--;q[++r]=i;}printf("%lld",f[cnt]);
}

BZOJ1597土地购买 【斜率优化DP】相关推荐

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

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

  2. [bzoj] 1597 土地购买 || 斜率优化dp

    原题 农夫John准备扩大他的农场,他正在考虑N块长方形的土地. 每块土地的价格是它的面积,但FJ可以同时购买多快土地. 这些土地的价格是它们最大的长乘以它们最大的宽, 但是土地的长宽不能交换. FJ ...

  3. 【BZOJ1597】【Tyvj2461】土地购买,第一次的斜率优化DP

    传送门1 传送门2 写在前面:看了好久斜率优化DP,感觉还是不太懂 思路: (受大牛博文启发) 1.除去无效边,li>=lj且ri>=rj,则j可以直接扔掉不要.因此我们可以按l或r排一下 ...

  4. bzoj 1597: [Usaco2008 Mar]土地购买(斜率优化dp 例题)

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

  5. 【总结】斜率优化DP

    于是,XSC062开始写总结. 斜率优化DP 前置芝士 单调队列优化DP(夹带私货) 正文 我们以一道题为例. 打印文章 双倍经验 三倍经验 Solution 明显DP. 那么DP式就是: f i = ...

  6. NOI2007 货币兑换 - CDQ分治斜率优化dp

    斜率优化dp维护一个凸壳.如果\(x, y\)坐标都递增,可以用单调队列,如果只有\(x\)递增,可以在凸壳上二分斜率,如果\(x, y\)都不递增,则需要在凸包中插入,可以用平衡树或cdq分治维护. ...

  7. CF-311B Cats Transport(斜率优化DP)

    题目链接 题目描述 小S是农场主,他养了 \(M\)只猫,雇了 \(P\) 位饲养员. 农场中有一条笔直的路,路边有 \(N\) 座山,从 \(1\) 到 \(N\)编号. 第 \(i\) 座山与第 ...

  8. 【洛谷3648】[APIO2014] 序列分割(斜率优化DP)

    点此看题面 大致题意: 你可以对一个序列进行\(k\)次分割,每次得分为两个块元素和的乘积,求总得分的最大值. 区间\(DPor\)斜率优化\(DP\) 这题目第一眼看上去感觉很明显是区间\(DP\) ...

  9. HDU-3507Print Article 斜率优化DP

    学习:https://blog.csdn.net/bill_yang_2016/article/details/54667902 HDU-3507 题意:有若干个单词,每个单词有一个费用,连续的单词组 ...

  10. APIO2010 特别行动队 斜率优化DP算法笔记

    做完此题之后 自己应该算是真正理解了斜率优化DP 根据状态转移方程$f[i]=max(f[j]+ax^2+bx+c),x=sum[i]-sum[j]$ 可以变形为 $f[i]=max((a*sum[j ...

最新文章

  1. 网络请求--Retrofit2使用方法
  2. STM32 进阶教程 4 - 软件实现高精度延时 2
  3. LTE小区选择和重选
  4. Quartz调度原理
  5. android和flask交互,java - 当我从Android向Flask Web服务发送参数时,如何解决“ SSL库故障”? - 堆栈内存溢出...
  6. 【C++基础】异常处理机制概要
  7. 训练日志 2019.1.14
  8. 从C语言中的指针看C#中委托
  9. 诗与远方:无题(四十)
  10. android+mms发送流程,mms发送流程代码版droid.docx
  11. .NET3.5 GDI+ 图形操作2
  12. 结合XML的数据检索技术
  13. Mac上安装eclipse svn插件subclipse
  14. soap java实现_Java实现SOAP协议
  15. 华为西安工业大学鸿蒙,培养百位将领、19位院士,这所211大学被誉为“华为人的母校”...
  16. 感恩节:美国人的春节
  17. js,JQ 图片转换base64 base64转换为file对象,blob对象
  18. winform程序使用clickonce方式发布之后点击安装没反应
  19. 【GPU精粹与Shader编程】(四) 《GPU Gems 2》全书核心内容提炼总结 · 上篇
  20. Win10(家庭版)修改中文用户名为英文

热门文章

  1. gite改提交的用户名称
  2. Android 角标设置
  3. 【2023王道数据结构】【树与二叉树】通过C++实现中序遍历的非递归算法(手动入出栈)C、C++完整实现(可直接运行
  4. 自动登录163邮箱发送邮件(Python+Selenium)
  5. qq团购群如何引流?群主如何建群拉新以及营销
  6. 租房签合同之前的注意事项
  7. 青铜时代 —— 图像处理
  8. web小说目录倒序php实现,php实现WEB在线文件管理器
  9. Python学习(列表)
  10. 网站使用微软雅黑需要版权吗