首先不难想到排序,这种无规律的东西一般都要转化为有规律才好做

首先以x为第一关键字,y为第二关键字升序排序

拍完序我们发现,若存在两块土地i,j

x[i]<=x[j],y[i]<=y[j],那么土地i的购买一定可以忽略(因为价格是由x,y的乘积决定的)

剔除掉不需考虑的土地,不难发现剩下的土地x是升序而y是降序的

然后就可以dp了

f[i]=min(f[k]+x[i]*y[k+1]); (0<=k<=i-1)

显然这个是很容易用斜率优化的,不多说了

 var q,st:array[..] of longint;
    x,y,f:array[..] of int64;
    w,n,t,h,r,i:longint; procedure swap(var a,b:int64);
  var c:longint;
  begin
    c:=a;
    a:=b;
    b:=c;
  end; procedure sort(l,r: longint);
  var i,j: longint;
      p,q:int64;
  begin
    i:=l;
    j:=r;
    p:=x[(l+r) shr ];
    q:=y[(l+r) shr ];
    repeat
      while (x[i]<p) or (x[i]=p) and (y[i]<q) do inc(i);
      while (p<x[j]) or (p=x[j]) and (q<y[j]) do dec(j);
      if not(i>j) then
      begin
        swap(x[i],x[j]);
        swap(y[i],y[j]);
        inc(i);
        j:=j-;
      end;
    until i>j;
    if l<j then sort(l,j);
    if i<r then sort(i,r);
  end; function check(l,r:longint):double;
  begin
    check:=(f[l]-f[r])/(y[st[r+]]-y[st[l+]]);
  end; begin
  readln(n);
  for i:= to n do
    readln(x[i],y[i]);
  sort(,n);
  t:=;
  st[]:=;
  for i:= to n do
  begin
    while (t>) and (x[i]>=x[st[t]]) and (y[i]>=y[st[t]]) do dec(t);
    inc(t);
    st[t]:=i;
  end;
  f[]:=;
  r:=;
  h:=;
  for i:= to t do
  begin
    while (h<r) and (check(q[h+],q[h])<=x[st[i]]) do inc(h);
    w:=q[h];
    f[i]:=f[w]+y[st[w+]]*x[st[i]];
    while (h<r) and (check(i,q[r])<check(q[r],q[r-])) do dec(r);
    inc(r);
    q[r]:=i;
  end;
  writeln(f[t]);
end.

bzoj1597的更多相关文章

  1. 【bzoj1597】 土地购买

    http://www.lydsy.com/JudgeOnline/problem.php?id=1597 (题目链接) 题意 购买n个矩形,每块土地的价格是它的面积,但可以同时购买多快土地. 这些土地 ...

  2. [BZOJ1597]土地购买

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

  3. 【题解】 bzoj1597: [Usaco2008 Mar]土地购买 (动态规划+斜率优化)

    bzoj1597懒得复制,戳我戳我 Solution: 线性DP打牌\(+\)斜率优化 定义状态:\(dp[i]\)到了位置\(i\)最少花费 首先我们要发现,如果有一个小方块能被其他的大方块包围,其 ...

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

    BZOJ1597土地购买 [斜率优化DP] Description 农夫John准备扩大他的农场,他正在考虑N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足( ...

  5. [bzoj1597][usaco2008 mar]土地购买 (动态规划+斜率优化)

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

  6. Bzoj1597 [Usaco2008 Mar]土地购买

    Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4005  Solved: 1460 Description 农夫John准备扩大他的农场,他正在考虑N ...

  7. 【BZOJ-1597】土地购买 DP + 斜率优化

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

  8. 【斜率DP】bzoj1597: [Usaco2008 Mar]土地购买

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

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

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

随机推荐

  1. ubuntu14.04下安装Naigos和pnp4nagios

    Nagios是一个监视系统运行状态和网络信息的监视系统.Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等. 安装环境:ubuntu14.04,全是最新的nagios和nagio ...

  2. 数学符号π (Pi)、Σ(Capital Sigma)、μ (Mu) 、σ(sigma)、∏(capital pi), ∫(Integral Symbol)的来历

    1.π (Pi; periphery/周长) March 14 marks Pi Day, the holiday commemorating the mathematical constant π ...

  3. [翻译][MVC 5 + EF 6] 1:创建数据模型

    原文:Getting Started with Entity Framework 6 Code First using MVC 5 1.新建MVC项目: 2.修改Views\Shared\_Layou ...

  4. scala - 从合并两个Map说开去 - foldLeft 和 foldRight 还有模式匹配

    开发中遇到需求:合并两个Map集合对象(将两个对应KEY的值累加) 先说解决方案: ( map1 )) ) } 这特么什么鬼  (╯‵□′)╯""┻━┻☆))>○<)  ...

  5. LAMP 环境 快速安装

    (一)安装Apache 1.下载安装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 yum install zlib-devel -y wget http://m ...

  6. 配置trac

    1. enable apache mod_auth_digest 2. 设置Location

  7. Java---Hibernate>>Can't create table './xxx/#sql-b2c_1a.frm' (errno: xxx)解决方法

    通用方案:删除相关表,重新生成. 1.关联表之间数据引擎不一致导致: 修改相关表的引擎设定,保持一致. 2.关联表索引字段的引用类型不一样(如A表关联字段是int,B表索引是char): 修改相关表的 ...

  8. 递归查找某个目录下是否存在NOTICE文件

    从Catalogs.txt文件中,读取待检查的目录列表.检查这些目录中,是否存在NOTICE文件,如果没有则检查它的父目录,直到cd ..到Repository目录. 如果cd ..到Reposito ...

  9. Socket 死连接详解

    Socket 死连接详解 当使用 Socket 进行通信时,由于各种不同的因素,都有可能导致死连接停留在服务器端,假如服务端需要处理的连接较多,就有可能造成服务器资源严重浪费,对此,本文将阐述其原理以 ...

  10. jQuery查看dom元素上绑定的事件列表

        jQuery API提供了一种能够查看元素已绑定事件的列表,这个功能在进行功能调试的时候特别有用,尤其确定在代码执行过程中元素绑定的事件是否被更改. 1: jQuery( elem ).dat ...