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

又一道斜率优化dp。负数让我混乱。不过仔细想想还是好的。

  还可以方便地把那个负号放到x上。只要改一下slope里的一个负号,就变成正常舒服的递增了。

这道题的要点其实是一开始h=0。不能h=1。这样就能把dp[0]纳入考虑。这是需要的。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=5e4+5;
int n,top,h,t,q[N];
ll dp[N];
struct Node{ll a,b;double k;
}r[N];
bool cmp(Node u,Node v){return u.a<v.a;}
double slope(int u,int v)
{return (dp[u]-dp[v])/(r[u+1].b-r[v+1].b);
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%lld%lld",&r[i].a,&r[i].b);sort(r+1,r+n+1,cmp);for(int i=1;i<=n;i++){while(top&&r[i].b>=r[top].b)top--;r[++top].a=r[i].a;r[top].b=r[i].b;}h=0;t=0;for(int i=1;i<=top;i++){while(h<t&&slope(q[h+1],q[h])>=-r[i].a)h++;dp[i]=dp[q[h]]+r[i].a*r[q[h]+1].b;while(h<t&&slope(i,q[t-1])>=slope(q[t],q[t-1]))t--;q[++t]=i;
//        printf("h:a=%d b=%d t:a=%d b=%d\n",r[q[h]].a,r[q[h]].b,r[q[t]].a,r[q[t]].b);
//        for(int i=1;i<=top;i++)printf("dp[%d]=%.0lf\n",i,dp[i]);
    }printf("%lld",dp[top]);return 0;
}

转载于:https://www.cnblogs.com/Narh/p/9198541.html

bzoj 1597 [Usaco2008 Mar]土地购买——斜率优化dp相关推荐

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

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

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

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

  3. bzoj 1597: [Usaco2008 Mar]土地购买【斜率优化】

    按xy降序排序,把能被完全包含的去掉 然后就得到了x升序y降序的一个数组 然后方程就显然了:f[i]=min(f[j]+y[j+1]x[i]) 斜率优化转移 说起来我还不会斜率优化呢是不是该学一下了 ...

  4. BZOJ 1597 [Usaco2008 Mar] 土地购买

    题意:中文题意,自行理解: 思路:这个题和hdu 1300 的题很像,算是一种类似于二维的扩展,题目不是很难,但窝发现网上的一些题解有些地方说的不是很清楚,在计算斜率优化式的时候,tzw大牛的博客里适 ...

  5. 决策单调性Ⅱ:斜率优化(1597: [Usaco2008 Mar]土地购买)

    决策单调性Ⅰ:四边形不等式: http://blog.csdn.net/jaihk662/article/details/78174717 决策单调性: 对于dp[i] = min(dp[i], dp ...

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

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

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

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

  8. bzoj1597[Usaco2008 Mar]土地购买

    bzoj1597[Usaco2008 Mar]土地购买 题意: n块土地,现在要求把土地分成几份,每份费用为该份中土地长最大值和宽最大值成绩,要求最小费用.n≤5000 题解: 当一块土地长宽都比另一 ...

  9. BZOJ 1010: [HNOI2008]玩具装箱toy 斜率优化dp

    Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1... ...

最新文章

  1. Eslint配置文件 `.eslintrc.js`
  2. android中解压文件
  3. 开发函数计算的正确姿势 —— 使用 Fun Local 本地运行与调试
  4. php rsa验证签名,php利用openssl实现RSA非对称加密签名验证
  5. GIMP 2.10教程
  6. python 加权随机算法_加权随机算法 - 飞儿飞的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. mongodb java and or,【MongoDB】-Java实现对mongodb的And、Or、In操作
  8. C/C++线程与多线程工作笔记0004---认识C中的线程和多线程
  9. dubbo源码-服务发现
  10. Why String is Immutable or Final in Java
  11. 智慧电力信息化系统建设整体方案
  12. css修改上传文件按钮样式,CSS自定义文件上传按钮样式,兼容主流浏览器
  13. Yoshua Bengio:注意力是“有意识”AI的核心要素
  14. oracle 手机壁纸,Android修改手机壁纸功能
  15. R语言之-caret包应用
  16. 张艾迪(创始人):我们接管世界
  17. springBoot集成swagger访问报404
  18. cisco思科实现MPLS 虚拟专用网
  19. 函数:无参无返回值函数的使用
  20. Qt中文帮助文档-QX11Info

热门文章

  1. 安卓学习笔记:使用PopupWindow创建简单菜单
  2. Fedora 18在ASUS N6系列电脑上以太网卡驱动的安装
  3. Crontab作业时间设置
  4. 一个基于typescript、mobx、react16、react-router4、antd的后台模板
  5. 纯手工打造简单分布式爬虫(Python)
  6. [WinAPI] API 14 [获取、设置文件属性和时间]
  7. 移动端ios中click点击失效
  8. 单元测试JUnit 4 (一)——keeps the bar green to keeps the code clean
  9. OSSIM中快速部署HIDS
  10. intel A20地址线