首先这道题有一个很重要的贪心就是

在保证所有干草堆都能参与搭建的前提下,我们尽量使最底层的宽度小,这样搭起来的的干草堆高度一定是最高的

当我们以第i个干草堆为一层,显然最优的情况是找到一个尽可能小的j (i<=j<=n)

使sum[j-1]-sum[i-1]>=h[j] (h[j]第j个干草堆为一层在满足上述条件下最小宽度)

显然朴素的遍历是O(n2),会超时;

如果对于j<k,对于后面的阶段i,如果h[j]-sum[j-1]<h[k]-sum[k-1] 那么j一定比k优

因为对于后面的阶段i,如果sum[k-1]-sum[i-1]>=h[k] 即h[k]-sum[k-1]<=-sum[i-1]

那么一定h[j]-sum[j-1]<=-sum[i-1]也成立,即j更小且满足条件,即j比k优

所以我们考虑用单调队列来维护这个性质

 var f,s,d,q:array[..] of longint;
    n,i,x,h,t:longint; begin
  readln(n);
  for i:= to n do
  begin
    read(x);
    s[i]:=s[i-]+x;
  end;
  q[]:=n+;
  h:=;
  t:=;
  for i:=n downto do
  begin
    while (h<t) and (s[q[h+]-]-s[i-]>=d[q[h+]]) do inc(h);
    d[i]:=s[q[h]-]-s[i-];
    f[i]:=f[q[h]]+;
    if i= then break;
    while (h<t) and (d[i]-s[i-]<d[q[t]]-s[q[t]-]) do dec(t);
    inc(t);
    q[t]:=i;
  end;
  writeln(f[]);
end.

bzoj1233的更多相关文章

  1. BZOJ1233 [Usaco2009Open]干草堆tower 【单调队列优化dp】

    题目链接 BZOJ1233 题解 有一个贪心策略:同样的干草集合,底长小的一定不比底长大的矮 设\(f[i]\)表示\(i...N\)形成的干草堆的最小底长,同时用\(g[i]\)记录此时的高度 那么 ...

  2. bzoj1233: [Usaco2009Open]干草堆tower

    Description 奶牛们讨厌黑暗. 为了调整牛棚顶的电灯的亮度,Bessie必须建一座干草堆使得她能够爬上去够到灯泡 .一共有N大包的干草(1<=N<=100000)(从1到N编号) ...

  3. bzoj1233[Usaco2009Open]干草堆tower 单调队列优化dp

    1233: [Usaco2009Open]干草堆tower Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 983  Solved: 464[Submi ...

  4. bzoj1233 单调队列优化dp

    https://www.lydsy.com/JudgeOnline/problem.php?id=1233 数据结构优化dp的代码总是那么抽象 题意:奶牛们讨厌黑暗. 为了调整牛棚顶的电灯的亮度,Be ...

  5. BZOJ1233 干草堆 - 单调队列优化DP

    问题描述: 若有干个干草, 分别有各自的宽度, 要求将它们按顺序摆放, 并且每层的宽度不大于 它的下面一层 ,  求最多叠几层 题解: zkw神牛证明了: 底边最短, 层数最高         证明: ...

  6. BZOJ1233 [Usaco2009Open]干草堆tower 和 BZOJ3549 [ONTAK2010]Tower

    题意 Problem 3549. -- [ONTAK2010]Tower 3549: [ONTAK2010]Tower Time Limit: 10 Sec  Memory Limit: 64 MBS ...

  7. bzoj1233 [Usaco2009Open]干草堆tower 【单调队列dp】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1233 单调队列优化的第一题,搞了好久啊,跟一开始入手斜率优化时感觉差不多... 这一题想通了 ...

  8. BZOJ1233 [Usaco2009Open]干草堆tower[贪心+单调队列优化]

    地址 注意思路!多看几遍! 很巧妙的一道题.不再是决策点以dp值中一部分含j项为维护对象,而是通过维护条件来获取决策. 首先有个贪心策略,让底层的宽度尽可能小,才能让高度尽可能高.所以应该倒着dp,表 ...

  9. [Usaco 再次除草]

    以后都用自己的号交吧 免得掉人品 Noip2016就是一个见证 一步一个脚印的刷 noip没把前两题稳拿就刷牛头..   bzoj1230 线段树打翻转标记,练手感 bzoj1231 状态压缩 预处理 ...

随机推荐

  1. MFC对话框程序EDIT类控件的自动换行,垂直滚动条自动下移

    1.新建一个Edit Control,将其Multiline属性设置为True,Auto HScroll属性设置False,这样就可以实现每一行填满后自动换行了.   2.再将Vetrical Scr ...

  2. ASP.net程序在本地操作正确,新电脑不正确的处理经验

    一.可能是计算机操作系统位数不兼容的问题,如下处理后即可.

  3. nvidia安装与卸载方式

    第1种方法:.最好的方式不是手动安装官方驱动(手动安装官方驱动无法使用gpu,而且无法启用3d,同时无法生效,所以最好采用此种方法),而是使用bumblebee-nvidia安装,不过要先添加x-sw ...

  4. IOS高级开发 runtime(一)

    一. 简介 IOS 开发中灵活使用runtime 会提高我们的程序性能和开发速度.要想使用runtime,首先要引入系统的头文件. <span style="font-size:18p ...

  5. O-C相关06:self和super关键字介绍——self关键字

    self关键字介绍 1.self和super OC 版权声明:本文为博主原创文章,未经博主允许不得转载. posted @ 2015-08-04 12:46 王刚韧(wanghy_iOS) 阅读(.. ...

  6. ObjectQuery查询及方法

    ObjectQuery 类支持对 实体数据模型 (EDM) 执行 LINQ to Entities 和 Entity SQL 查询.ObjectQuery 还实现了一组查询生成器方法,这些方法可用于按 ...

  7. LINUX开机启动过程

    LINUX开机启动过程 启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息 ...

  8. sqlserver字符串转日期

    declare   @str   varchar(15)     declare   @dt   datetime     select   @str='2005-8-26'     set   @d ...

  9. xml技术DTD约束定义

    XML约束 在XML技术中,可以编写一个文档来约束一个xml文档的书写规范,这称之为XML约束为什么需要XML约束? class.xml <stu><面积>?人怎么会有面积元素 ...

  10. php中文编码

    header("Content-type: text/html; charset=utf-8"); header('Location: http://www.example.com ...