题目: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+;
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+].b-r[v+].b);
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%lld%lld",&r[i].a,&r[i].b);
sort(r+,r+n+,cmp);
for(int i=;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=;t=;
for(int i=;i<=top;i++)
{
while(h<t&&slope(q[h+],q[h])>=-r[i].a)h++;
dp[i]=dp[q[h]]+r[i].a*r[q[h]+].b;
while(h<t&&slope(i,q[t-])>=slope(q[t],q[t-]))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 ;
}

bzoj 1597 [Usaco2008 Mar]土地购买——斜率优化dp的更多相关文章

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

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

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

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

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

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

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

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

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

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

  6. BZOJ 1597: [Usaco2008 Mar]土地购买【斜率优化+凸包维护】

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

  7. 斜率优化专题1——bzoj 1597 [Usaco2008 Mar] 土地购买 题解

    转载请注明:http://blog.csdn.net/jiangshibiao/article/details/24387147 [原题] 1597: [Usaco2008 Mar]土地购买 Time ...

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

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1597 题意: 有n块矩形土地,长为a[i],宽为b[i]. FJ想要将这n块土地全部买下来 ...

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

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

随机推荐

  1. 带SSL证书的httpclient 远程接口工具类

    package com.iups.wx.util; import java.io.IOException; import java.io.UnsupportedEncodingException; i ...

  2. EF Code-First 学习之旅 多对多的关系

    public class Student { public Student() { this.Courses = new HashSet<Course>(); } public int S ...

  3. Hibernate -- 对象关系映射基础

  4. Python基础笔记系列三:list列表

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! python中的list列表是一种序列型数据类型,一有序数据集合用逗号间隔 ...

  5. XML 存储文档

    package com.kpsh.myself; import java.io.File;import java.io.FileWriter; import org.dom4j.Document;im ...

  6. Three.js基础:导入STL模型文件

    stlloadertest.html: <!DOCTYPE html> <html lang="en"> <head> <title> ...

  7. 四十一 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查

    elasticsearch(搜索引擎)基本的索引和文档CRUD操作 也就是基本的索引和文档.增.删.改.查.操作 注意:以下操作都是在kibana里操作的 elasticsearch(搜索引擎)都是基 ...

  8. Ceph Monitor基础架构与模块详解

    转自:https://www.ustack.com/blog/ceph-monitor/ Ceph rados cluster离不开Monitor,如果没有Monitor,则Ceph将无法执行一条简单 ...

  9. JS兼容性汇总

    1.  Frame  (1)问题:在IE中可以用window.top.frameId和window.top.frameName来得到该Frame所代表的Window,Firefox中只能用window ...

  10. android知识点大总结

    1.掌握Android编程的基本概念与要点,Android SDK及其开发环境搭建.Android项目结构分析.2.Android 应用设计模式.文件系统.3.文件形式的数据存储与访问.SDCard卡 ...