参考:https://www.cnblogs.com/N-C-Derek/archive/2012/07/11/usaco_09_open_tower.html
虽然长得很像斜率优化,但是应该不算……
贪心是错的,对拍出好多异常情况
s[i]为前缀和,从顶向下dp;设f[i]为本层宽度,g[i]为这是第几层,转移是g[i]=max(g[j]+1||s[j]-s[i]>f=[j]&&j>i)
如果k>j,除非j不满足条件,否则j最优,用一个单调栈维护能做贡献的j即可

#include<iostream>
#include<cstdio>
using namespace std;
const int N=100005;
int n,l=1,r=1,q[N],s[N],f[N],g[N];
int read()
{int r=0,f=1;char p=getchar();while(p>'9'||p<'0'){if(p=='-')f=-1;p=getchar();}while(p>='0'&&p<='9'){r=r*10+p-48;p=getchar();}return r*f;
}
int main()
{n=read();for(int i=1;i<=n;i++)s[i]=s[i-1]+read();q[1]=n+1;for(int i=n;i>=1;i--){while(l<r&&s[q[l+1]-1]-s[i-1]>=f[q[l+1]])l++;f[i]=s[q[l]-1]-s[i-1];g[i]=g[q[l]]+1;while(l<r&&f[i]-s[i-1]<f[q[r]]-s[q[r]-1])r--;q[++r]=i;}printf("%d\n",g[1]);return 0;
}

转载于:https://www.cnblogs.com/lokiii/p/8993955.html

bzoj 1233: [Usaco2009Open]干草堆tower【dp+单调栈】相关推荐

  1. [BZOJ1233][Usaco2009Open]干草堆tower(单调队列优化)

    传送门 题意搞skr人-,其实就是堆方块: 有n(n<=100000)个干草,每堆有个宽度,现在要且分成若干段,把每一段的干草按顺序堆起来形成一个多层的干草堆(所以下标越小的干草堆放在越下面)且 ...

  2. bzoj-1233 [Usaco2009Open]干草堆tower

    1233: [Usaco2009Open]干草堆tower** 题目链接 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1030 Solved: 49 ...

  3. Bzoj1233 [Usaco2009Open]干草堆tower

    Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 811  Solved: 378 Description 奶牛们讨厌黑暗. 为了调整牛棚顶的电灯的亮度 ...

  4. 【BZOJ 1233】 干草堆

    [题目链接] 点击打开链接 [算法] 这题有一个性质 : 位于顶层的干草堆可以满足宽度最小且高度最高 根据这个性质,用单调队列优化DP,即可 [代码] #include<bits/stdc++. ...

  5. 【BZOJ】3039: 玉蟾宫(DP/单调栈)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3039 每次看到我的提交都有点淡淡的忧伤T_T.. 看到此题我想到用前缀和维护点ij向左和向上能拓展的 ...

  6. [bzoj1233]干草堆tower

    [bzoj1233]干草堆tower 首先,倒着直接贪心是会被卡的 数据如下: 6 11 10 7 3 2 6 然后我们可以发现一些性质:每个点取能取的最小的宽度,这样一定能构成最优解 然后状态是f[ ...

  7. bzoj 1233 干草堆tower 优先队列优化dp

    https://www.lydsy.com/JudgeOnline/problem.php?id=1233 描述: 奶牛们讨厌黑暗. 为了调整牛棚顶的电灯的亮度,Bessie必须建一座干草堆使得她能够 ...

  8. hdu 1506(dp || 单调栈)

    题意:这题是要找最大的矩形面积. 解题思路:这题的关键是要找每个条形能够往左和往右能够到达的最大长度.我最开始的思路是单调栈去维护,只要入栈的元素比栈顶元素小,栈顶就要出栈,并且知道其最右能够到达的最 ...

  9. CodeForces - 1484E Skyline Photo(dp+单调栈)

    题目链接:点击查看 题目大意:给出 nnn 个建筑,每个建筑有一个高度和一个美丽值,现在要求划分为数个连续的区间,使得所有区间的贡献之和最大,其中每个区间的贡献值为,区间中高度最低的建筑物的美丽值 题 ...

最新文章

  1. 今日头条CEO朱文佳:新一代搜索引擎已经来了
  2. 1.12 深层循环神经网络-深度学习第五课《序列模型》-Stanford吴恩达教授
  3. 35岁以上的程序员们,后来都干什么去了?
  4. 【bzoj题解】1001 狼抓兔子
  5. 读c语言深度剖析 -- 单引号与双引号、逻辑运算符、位运算符、花括号
  6. ansible介绍+基本操作
  7. RxSwift学习插曲--Timer补充内容
  8. 江苏大学21考研计算机技术上岸
  9. 返回目录中所有JPG图像的文件名列表
  10. Vue:router的beforeEach与afterEach钩子函数
  11. a:link,a:visited,a:hover,a:active
  12. 查询银行卡归属地区API接口
  13. 工业机器人实训耗材_工业机器人实训课程
  14. python使用Speech_Recognition实现普通话识别(一)
  15. 【干货】针对DNN的神经网络中上下文相关处理的连续学习概述
  16. 计算机毕业设计(80)php小程序毕设作品之视频播放电影小程序系统
  17. 剑指offer之斐波那契数列求解
  18. android 动画无缝滚动,CSS3动画之无缝滚动
  19. 计算机辅助工业设计应用软件,计算机辅助工业设计(CAID)
  20. color code

热门文章

  1. 将 Shiro 作为应用的权限基础
  2. 生产交接班管理系统的安装设置并下载
  3. Lync Server 2010迁移至Lync Server 2013部署系列21:Lync 2013边缘第二台服务器配置
  4. 十招轻松搞定社会媒体
  5. day 05 python基础
  6. python之内置函数(二)与匿名函数、递归函数初识
  7. 转:MySQL索引原理及慢查询优化
  8. Spring MVC系列[1]—— HelloWorld
  9. 生成可执行jar文件
  10. java.lang.RuntimeException: Handler (com.***.behavior.BEvent$1) {421bca80} sending message to a Hand