BZOJ 1597 土地购买
斜率优化。。。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 50050
#define inf 0x7f7f7f7f7f7f7f7fLL
using namespace std;
long long n,s[maxn],top=,f[maxn],g[maxn],a[maxn],b[maxn],l,r,q[maxn];
struct pnt
{
long long x,y;
}p[maxn];
bool cmp(pnt x,pnt y)
{
if (x.x!=y.x) return x.x<y.x;
return x.y<y.y;
}
double k(long long x,long long y)
{
if (b[x]==b[y]) return inf;
return (double)(g[x]-g[y])/(b[x]-b[y]);
}
int main()
{
scanf("%lld",&n);
for (long long i=;i<=n;i++) scanf("%lld%lld",&p[i].x,&p[i].y);
sort(p+,p+n+,cmp);
for (long long i=;i<=n;i++)
{
while ((p[i].y>=p[s[top]].y) && (top)) top--;
s[++top]=i;
}
for (long long i=;i<=top;i++) a[i]=p[s[i]].x,b[i]=p[s[i]].y;
f[]=a[]*b[];l=r=;q[l]=;
for (long long i=;i<=top;i++)
{
g[i]=f[i-];
while ((r-l>) && (k(q[r-],q[r])<k(q[r],i))) r--;
q[++r]=i;
while ((r-l>) && (k(q[l],q[l+])>=-a[i])) l++;
f[i]=g[q[l]]+a[i]*b[q[l]];
}
printf("%lld\n",f[top]);
return ;
}
BZOJ 1597 土地购买的更多相关文章
- BZOJ 1597 土地购买(斜率优化DP)
如果有一块土地的长和宽都小于另一块土地的长和宽,显然这块土地属于“赠送土地”. 我们可以排序一下将这些赠送土地全部忽略掉,一定不会影响到答案. 那么剩下的土地就是长递减,宽递增的.令dp[i]表示购买 ...
- 【BZOJ 1597】 [Usaco2008 Mar]土地购买 (斜率优化)
1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3601 Solved: 1322 Descrip ...
- BZOJ 1597: [Usaco2008 Mar]土地购买 [斜率优化DP]
1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4026 Solved: 1473[Submit] ...
- BZOJ 1597: [Usaco2008 Mar]土地购买( dp + 斜率优化 )
既然每块都要买, 那么一块土地被另一块包含就可以不考虑. 先按长排序, 去掉不考虑的土地, 剩下的土地长x递增, 宽y递减 dp(v) = min{ dp(p)+xv*yp+1 } 假设dp(v)由i ...
- BZOJ 1597: [Usaco2008 Mar]土地购买【斜率优化+凸包维护】
1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4989 Solved: 1847[Submit] ...
- BZOJ 1597: [Usaco2008 Mar]土地购买 斜率优化
1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec Memory Limit: 162 MB Description 农夫John准备扩大他的农场,他正在考虑N ...
- 斜率优化专题1——bzoj 1597 [Usaco2008 Mar] 土地购买 题解
转载请注明:http://blog.csdn.net/jiangshibiao/article/details/24387147 [原题] 1597: [Usaco2008 Mar]土地购买 Time ...
- 【BZOJ】【1597】【USACO 2008 Mar】土地购买
DP/斜率优化 Orz Hzwer…… 想到排序了,但没想到其实可以将序列转化为x递增且y递减的序列……因为x是递增的,若y[i]>y[i-1]那么第i-1个就足够小……以至于可以在搞定第 i ...
- 1597: [Usaco2008 Mar]土地购买
1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4023 Solved: 1470[Submit] ...
随机推荐
- PE文件学习系列笔记四-C++实现PE文件的分析
合肥程序员群:49313181. 合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q Q:408365330 E-Mail:egojit@qq.com 综述: 首 ...
- rpm 软件安装
安装 vi 软件 rpm q查询 a全部软件 e 卸载 i 安装 v 显示进度 h 以#显示 首先确定软件时候安装 rpm 实现软件的安装 卸载 升级 查询等 1)查询是否已经安装过 rpm -qa ...
- Convert Sorted List to Binary Search Tree [LeetCode]
Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...
- Android6.0获取权限
照着<第一行代码>打代码,然并卵,感叹技术进步的神速.最后提醒一点:IT类的书籍一定要注意出版时间!出版时间!出版时间!重要的事情说三遍 问题出在android6.0的权限获取问题上,以前 ...
- AngularJS学习笔记
一.初识AngularJS:1.Angularjs通过创建实时模板来代替视图,而不是将数据合并进模板后更新DOM,任何一个独立视图组件中的值都是动态替换的. 二.数据绑定和第一个AngularJS W ...
- ORACLE 连接SQLSERVER 数据库备忘
最近工作需要,要从SQL SERVER数据库中同步提取数据. 这里采用了 Oracle Gateway 来连接,折腾了半天,终于搞定,记录下已备下次使用. 基本资料网上都可以搜很多,官网配置说明在这 ...
- 使用R进行地图相关的可视化
Here is a solution using the geosphere and maps package. Using the gcIntermediate function you can & ...
- oracle基础学习
一.创建数据库用户 create user myaccount identified by mypassword;(my+account表示 账号,my+password表示 密码) 二.授予用户权限 ...
- spring @ModelAttribute 注解
@ModelAttribute // 表示请求该类的每个Action前都会首先执行它,也可以将一些准备数据的操作放置在该方法里面. public void setReqAndRes(HttpServl ...
- SVN使用说明
一,安装客户端SVN 1.下载 "svn小乌龟"后,进行安装.如下图: 安装完成后,右键项目文件夹就可以看到如下: 2:checkout项目文件. 新建或者进入目录下(比如qian ...