bzoj 1597 [Usaco2008 Mar]土地购买——斜率优化dp
题目: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相关推荐
- BZOJ 1597: [Usaco2008 Mar]土地购买( dp + 斜率优化 )
既然每块都要买, 那么一块土地被另一块包含就可以不考虑. 先按长排序, 去掉不考虑的土地, 剩下的土地长x递增, 宽y递减 dp(v) = min{ dp(p)+xv*yp+1 } 假设dp(v)由i ...
- bzoj 1597: [Usaco2008 Mar]土地购买(斜率优化dp 例题)
Description 农夫John准备扩大他的农场,他正在考虑N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足(1 <= 宽 <= 1,000, ...
- bzoj 1597: [Usaco2008 Mar]土地购买【斜率优化】
按xy降序排序,把能被完全包含的去掉 然后就得到了x升序y降序的一个数组 然后方程就显然了:f[i]=min(f[j]+y[j+1]x[i]) 斜率优化转移 说起来我还不会斜率优化呢是不是该学一下了 ...
- BZOJ 1597 [Usaco2008 Mar] 土地购买
题意:中文题意,自行理解: 思路:这个题和hdu 1300 的题很像,算是一种类似于二维的扩展,题目不是很难,但窝发现网上的一些题解有些地方说的不是很清楚,在计算斜率优化式的时候,tzw大牛的博客里适 ...
- 决策单调性Ⅱ:斜率优化(1597: [Usaco2008 Mar]土地购买)
决策单调性Ⅰ:四边形不等式: http://blog.csdn.net/jaihk662/article/details/78174717 决策单调性: 对于dp[i] = min(dp[i], dp ...
- [bzoj] 1597 土地购买 || 斜率优化dp
原题 农夫John准备扩大他的农场,他正在考虑N块长方形的土地. 每块土地的价格是它的面积,但FJ可以同时购买多快土地. 这些土地的价格是它们最大的长乘以它们最大的宽, 但是土地的长宽不能交换. FJ ...
- 【BZOJ 1597】 [Usaco2008 Mar]土地购买 (斜率优化)
1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 3601 Solved: 1322 Descri ...
- bzoj1597[Usaco2008 Mar]土地购买
bzoj1597[Usaco2008 Mar]土地购买 题意: n块土地,现在要求把土地分成几份,每份费用为该份中土地长最大值和宽最大值成绩,要求最小费用.n≤5000 题解: 当一块土地长宽都比另一 ...
- BZOJ 1010: [HNOI2008]玩具装箱toy 斜率优化dp
Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1... ...
最新文章
- Eslint配置文件 `.eslintrc.js`
- android中解压文件
- 开发函数计算的正确姿势 —— 使用 Fun Local 本地运行与调试
- php rsa验证签名,php利用openssl实现RSA非对称加密签名验证
- GIMP 2.10教程
- python 加权随机算法_加权随机算法 - 飞儿飞的个人空间 - OSCHINA - 中文开源技术交流社区...
- mongodb java and or,【MongoDB】-Java实现对mongodb的And、Or、In操作
- C/C++线程与多线程工作笔记0004---认识C中的线程和多线程
- dubbo源码-服务发现
- Why String is Immutable or Final in Java
- 智慧电力信息化系统建设整体方案
- css修改上传文件按钮样式,CSS自定义文件上传按钮样式,兼容主流浏览器
- Yoshua Bengio:注意力是“有意识”AI的核心要素
- oracle 手机壁纸,Android修改手机壁纸功能
- R语言之-caret包应用
- 张艾迪(创始人):我们接管世界
- springBoot集成swagger访问报404
- cisco思科实现MPLS 虚拟专用网
- 函数:无参无返回值函数的使用
- Qt中文帮助文档-QX11Info
热门文章
- 安卓学习笔记:使用PopupWindow创建简单菜单
- Fedora 18在ASUS N6系列电脑上以太网卡驱动的安装
- Crontab作业时间设置
- 一个基于typescript、mobx、react16、react-router4、antd的后台模板
- 纯手工打造简单分布式爬虫(Python)
- [WinAPI] API 14 [获取、设置文件属性和时间]
- 移动端ios中click点击失效
- 单元测试JUnit 4 (一)——keeps the bar green to keeps the code clean
- OSSIM中快速部署HIDS
- intel A20地址线