题目背景

为了调整电灯亮度,贝西要用干草包堆出一座塔,然后爬到牛棚顶去把灯泡换掉。干草包会从传送带上运来,共会出现N包干草,第i包干草的宽度是W i ,高度和长度统一为1。干草塔要从底层开始铺建。贝西会选择最先送来的若干包干草,堆在地上作为第一层,然后再把紧接着送来的几包干草包放在第二层, 再铺建第三层……重复这个过程, 一直到所有的干 草全部用完。每层的干草包必须紧靠在一起,不出现缝隙,而且为了建筑稳定,上层干草的宽度不能超过下层的宽度。 按顺序运来的干草包一定要都用上, 不能将其中几个干草包弃置不用。贝西的目标是建一座最高的塔,请你来帮助她完成这个任务吧。

题目描述

输入输出格式

输入格式:

第一行:单个整数:NN,1 ≤ N ≤ 1000001≤N≤100000 第二行到N + 1N+1行:第i + 1i+1行有一个整数W_iWi​ ,1 ≤ W_i ≤ 100001≤Wi​≤10000

输出格式:

第一行:单个整数,表示可以建立的最高高度

输入输出样例

输入样例#1: 复制

3
1
2
3

输出样例#1: 复制

2

说明

将 1 和 2 放在第一层,将 3 放在第二层

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define re register
 4 #define R  re int
 5 #define rep(i,a,b) for(R i=a;i<=b;i++)
 6 #define Rep(i,a,b) for(R i=a;i>=b;i--)
 7 template<class T>inline void read(T &x){
 8   x=0; char c=0;
 9   while (!isdigit(c)) c=getchar();
10   while (isdigit(c)) x=x*10+(c^48),c=getchar();
11 }
12 int const N=100000+3;
13 int n,a[N],q[N],s[N],f[N],g[N];
14 int main(){
15   read(n);
16   rep(i,1,n){
17     read(a[i]);s[i]=s[i-1]+a[i];
18   }
19   int l=0,r=0; q[0]=n+1;
20   Rep(i,n,1){
21     while (l<r && s[q[l+1]-1]-f[q[l+1]]>=s[i-1]) l++;
22     f[i]=s[q[l]-1]-s[i-1];
23     g[i]=g[q[l]]+1;
24     while (l<=r && s[i-1]-f[i]>=s[q[r]-1]-f[q[r]]) r--;
25     q[++r]=i;
26   }
27   printf("%d\n",g[1]);
28   return 0;
29 }

View Code

转载于:https://www.cnblogs.com/ZJXXCN/p/10196756.html

bzoj 1233 or 3549相关推荐

  1. BZOJ 1233 干草堆 (单调队列优化DP)

    \(BZOJ~1233~~\)干草堆: (题目特殊性质) \(solution:\) 很妙的一道题目,开始看了一眼觉得是个傻逼贪心,从后往前当前层能多短就多短,尽量节省花费.但是这是DP专题,怎么会有 ...

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

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

  3. bzoj 1233: [Usaco2009Open]干草堆tower【dp+单调栈】

    参考:https://www.cnblogs.com/N-C-Derek/archive/2012/07/11/usaco_09_open_tower.html 虽然长得很像斜率优化,但是应该不算-- ...

  4. 【BZOJ 1233】 干草堆

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

  5. BZOJ.1558.[JSOI2009]等差数列(线段树 差分)

    BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...

  6. S-T平面图中利用最短路求最小割(BZOJ 1001)

    BZOJ 1001: [BeiJing2006]狼抓兔子 最小割 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现在小朋友们最喜欢 ...

  7. BZOJ 1124: [POI2008]枪战Maf(构造 + 贪心)

    题意 有 \(n\) 个人,每个人手里有一把手枪.一开始所有人都选定一个人瞄准(有可能瞄准自己).然后他们按某个顺序开枪,且任意时刻只有一个人开枪. 因此,对于不同的开枪顺序,最后死的人也不同. 问最 ...

  8. BZOJ 2957楼房重建

    传送门 线段树 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include< ...

  9. BZOJ.5249.[九省联考2018]iiidx(贪心 线段树)

    BZOJ LOJ 洛谷 \(d_i\)不同就不用说了,建出树来\(DFS\)一遍. 对于\(d_i\)不同的情况: Solution 1: xxy tql! 考虑如何把这些数依次填到树里. 首先对于已 ...

最新文章

  1. Python核心编程(第二版)第六章部分习题代码
  2. php下扩展php_curl.dll的安装
  3. Hyperic HQ HQU 插件开发指南
  4. etcd分布式之消息发布与订阅
  5. basler相机参数简要中文说明_你知道相机曝光模式怎么用么?6种相机曝光模式详解及应用...
  6. opengl编程从入门到精通-hello,window
  7. 按键映射_第三章 中文注释及按键相关
  8. Perl正则表达式匹配
  9. 河南科技大学计算机基础题库,河南科技大学大学计算机基础Excel基本操作选择题汇总...
  10. Python机器学习:KNN算法08scikit-learn中的Scaler
  11. 习题1.8 二分查找 (20 分) 数据结构练习
  12. 力扣—— 36. 有效的数独/37. 解数独
  13. 【整理总结】代码沉淀 - Caliburn.Micro - MV*模式短小精悍的框架
  14. ABB RobotStudio6.08安装
  15. Duplicate class com.blankj.utilcode.BuildConfig found in modules classes.jar
  16. 基于端到端深度强化学习的柔性作业车间调度问题研究
  17. 汽车配件+供应链一体化:降低库存成本,提高运营效率
  18. linux根目录下各子目录的作用
  19. 2022道路运输企业安全生产管理人员考试模拟100题及在线模拟考试
  20. youtube的使用体会

热门文章

  1. 使用jsonpath解析json内容
  2. 2019年春季学期第四周作业Compile Summarize
  3. 【9915】乘积最大
  4. angular模拟web API
  5. python正则表达式模块
  6. 《TCP/IP详解 卷一》读书笔记-----广播多播IGMP
  7. RSA, ACS5.X 集成配置
  8. window远程桌面连接centos7
  9. Anroid基础建设之View,Window,Activity
  10. 【剑指offer-Java版】34丑数