bzoj1233
首先这道题有一个很重要的贪心就是
在保证所有干草堆都能参与搭建的前提下,我们尽量使最底层的宽度小,这样搭起来的的干草堆高度一定是最高的
当我们以第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的更多相关文章
- BZOJ1233 [Usaco2009Open]干草堆tower 【单调队列优化dp】
题目链接 BZOJ1233 题解 有一个贪心策略:同样的干草集合,底长小的一定不比底长大的矮 设\(f[i]\)表示\(i...N\)形成的干草堆的最小底长,同时用\(g[i]\)记录此时的高度 那么 ...
- bzoj1233: [Usaco2009Open]干草堆tower
Description 奶牛们讨厌黑暗. 为了调整牛棚顶的电灯的亮度,Bessie必须建一座干草堆使得她能够爬上去够到灯泡 .一共有N大包的干草(1<=N<=100000)(从1到N编号) ...
- bzoj1233[Usaco2009Open]干草堆tower 单调队列优化dp
1233: [Usaco2009Open]干草堆tower Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 983 Solved: 464[Submi ...
- bzoj1233 单调队列优化dp
https://www.lydsy.com/JudgeOnline/problem.php?id=1233 数据结构优化dp的代码总是那么抽象 题意:奶牛们讨厌黑暗. 为了调整牛棚顶的电灯的亮度,Be ...
- BZOJ1233 干草堆 - 单调队列优化DP
问题描述: 若有干个干草, 分别有各自的宽度, 要求将它们按顺序摆放, 并且每层的宽度不大于 它的下面一层 , 求最多叠几层 题解: zkw神牛证明了: 底边最短, 层数最高 证明: ...
- BZOJ1233 [Usaco2009Open]干草堆tower 和 BZOJ3549 [ONTAK2010]Tower
题意 Problem 3549. -- [ONTAK2010]Tower 3549: [ONTAK2010]Tower Time Limit: 10 Sec Memory Limit: 64 MBS ...
- bzoj1233 [Usaco2009Open]干草堆tower 【单调队列dp】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1233 单调队列优化的第一题,搞了好久啊,跟一开始入手斜率优化时感觉差不多... 这一题想通了 ...
- BZOJ1233 [Usaco2009Open]干草堆tower[贪心+单调队列优化]
地址 注意思路!多看几遍! 很巧妙的一道题.不再是决策点以dp值中一部分含j项为维护对象,而是通过维护条件来获取决策. 首先有个贪心策略,让底层的宽度尽可能小,才能让高度尽可能高.所以应该倒着dp,表 ...
- [Usaco 再次除草]
以后都用自己的号交吧 免得掉人品 Noip2016就是一个见证 一步一个脚印的刷 noip没把前两题稳拿就刷牛头.. bzoj1230 线段树打翻转标记,练手感 bzoj1231 状态压缩 预处理 ...
随机推荐
- android studio环境搭建-笔记1
自己干了几年测试(功能性的),最近比较闲,就自己学习下android(以前也有所接触,但那是几年前的一点皮毛,都忘记了). 先搭建谷歌推出的android studio(以前用eclipse搭建总觉得 ...
- 【JAVA错误笔记】 - c3p0问题java.lang.NoClassDefFoundError:com.mchange.v2.ser.Indirector
错误描述:java.lang.NoClassDefFoundError:com.mchange.v2.ser.Indirector 原因分析: 这是c3p0的一个错误信息,我们在下载 c3p0时候,z ...
- ArcGIS Runtime SDK for WPF已不更新,后续将被ArcGIS Runtime SDK for .NET取代
ArcGIS Runtime SDK 10.2.5 for WPF is now available! by mbranscomb and Rex Hansen on January 27, 2015 ...
- html + ashx 实现Ajax省市联动
基本思路:1.了解数据库中省和市的表结构及关联主键 2.创建html页面及select标签 3.通过ajax向ashx(一般处理程序)发送后台请求完成联动效果 表结构: 这里,开始创建一个命为demo ...
- 九度OJ 1078 二叉树遍历
题目地址:http://ac.jobdu.com/problem.php?pid=1078 题目描述: 二叉树的前序.中序.后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历 ...
- 菜鸟的MySQL学习笔记(四)
MySQL中的运算符和函数: 1.字符函数: 2.数值运算符与函数: 3.比较运算符与函数: 4.日期时间函数: 5.信息函数: 6.聚合函数: 7.加密函数等: 6-1.字符函数: CONCAT ...
- 嵌入式linux无线网卡的使用
from:http://blog.csdn.net/sparksalmon/article/details/8445287 嵌入式linux无线网卡的使用 最近一直在开发机顶盒上的无线功能,把这一段的 ...
- 利用OllyDebug查看程序调用的dll模块
最近在做一个Qt项目,在产品发布的时候一直为找不到程序到底缺少了哪些dll组件而困扰.具体问题是,在我的项目中使用到了QMediaPlayer播放一段音频文件,我使用的开发环境的Win7 32位,而在 ...
- 使用Unidac内置连接池
第一步: 放一个TUniconnection并设置相关属性 之后直接使用TUniconnection对象即可 跟踪unidac源码uni单元1540行中可以看到 Connect方法调用CreateIC ...
- sql性能优化总结(转)
网上看到一篇sql优化的文章,整理了一下,发现很不错,虽然知道其中的部分,但是没有这么全面的总结分析过…… 一. 目的 数据库参数进行优化所获得的性能提升全部加起来只占数据库应用系统性能提升的40 ...