题意:一张相片上的很多建筑相互遮住了,根据高低不同就在相片上把一座高楼的可见部分作为一个矩形,并用数字描述其高度,若一张相片上的两个建筑群中间有空地,高度则为0;求最少有多少个建筑;

解题思路:这道题看到别人是划分到RMQ,但怎么也想不到用RMQ,所以自己想了一个单调栈处理。每次加入的一个节点,我们需要维护单调栈保证它单调递增,如果加入的要大于栈顶元素,就退栈,一直到栈为空或者栈顶元素与其相等,当有栈顶元素与其相等,就说明它和之前的某一个高度是可以连在一起的,类似于1,2,1这样的,两边的1可以组成一个建筑。这道题其实不难想,不过有一个坑,当高度为0,即为空地时,我最开始把它直接忽略掉了,但最后WA了,实际上空地对这些建筑之间有分割作用,比如这组数据:1 2 0 2 3 2 1。

AC:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;const int maxn = 100005;
int n,house[maxn],Stack[maxn],top;
bool flag[maxn];int main()
{int cas = 1;while(scanf("%d",&n)!=EOF){for(int i = 1; i <= n; i++)scanf("%d",&house[i]);memset(flag,false,sizeof(flag));top = 0;for(int i = 1; i <= n; i++){while(top > 0 && Stack[top-1] > house[i])top--;if(top == 0){Stack[top++] = house[i];continue;}if(Stack[top-1] == house[i])flag[i] = true;else if(Stack[top-1] < house[i])Stack[top++] = house[i];}int ans = 0;for(int i = 1; i <= n; i++)if(!flag[i] && house[i] > 0)ans++;printf("Case %d: %d\n",cas++,ans);}return 0;
}

hdu 4252(单调栈)相关推荐

  1. 算法竞赛入门与进阶 (二)单调队列、单调栈

    栈(stack)和队列( queue ) 1.栈的定义:栈是限定仅在表头进行插入和删除操作的线性表(先进后出) 2.队列的定义:队列是一种特殊的线性表,特殊之处在于 它只允许在表的前端(front)进 ...

  2. HDU多校4 - 6989 Didn‘t I Say to Make My Abilities Average in the Next Life?!(单调栈)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,再给出 mmm 次询问,每次询问给出一个区间 [l,r][l,r][l,r],要求输出区间 [l,r][l,r][l,r] 内 " ...

  3. HDU 6194 后缀数组+单调栈

    题意: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6194 找到一个字符串中恰好出现k次的子串的数目. 思路: 计算出height数组,根据heig ...

  4. HDU 1506 解题报告 Largest Rectangle in a Histogram (单调栈)

    看题传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1506 题意比较明显,就是找以某一个矩形为高的最大的矩形.这个题可以用单调栈来求解,需要注意的是如果从 ...

  5. 数据结构 单调栈+几何 摩天大楼【HDU 5033 】

    HDU 5033 题目大意: 就是一个人来到充满摩天大楼的城市,所有大楼没有宽度.建一直角坐标系,给出每个建筑的高度,现在求人站在(x,0)处能够看到天空的范围.(即不被摩天大楼阻挡).答案只需要给出 ...

  6. HDU 6052 To my boyfriend(容斥+单调栈)

    题意:对于一个n*m的方格,每个格子中都包含一种颜色,求出任意一个矩形包含不同颜色的期望. 思路: 啊啊啊啊啊,补了两天,总算A了这道题了,简直石乐志,前面的容斥还比较好写,后面的那个>13那个 ...

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

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

  8. HDU 1506 Largest Rectangle in a Histogram(dp、单调栈)

    你是不是飘了?骚年! Problem Description A histogram is a polygon composed of a sequence of rectangles aligned ...

  9. HDU多校1 - 6759 Leading Robots(单调栈)

    题目链接:点击查看 题目大意:n 个机器人在数轴上赛跑,给出每个机器人的起点和加速度,初始速度都为 0 ,问有多少个机器人在赛跑的过程中可以成为最前面的一个 题目分析:又是被zx学长秒掉的一道题,感谢 ...

最新文章

  1. 练习2:课工场响应式导航条_作业帮直播课APP下载最新版入口
  2. 列表组件之ListView
  3. mysql设置远程访问
  4. 深度解析2019中国机器人行业年会主旨报告:把脉中国机器人发展,助力产业创新与协作共融...
  5. 基于TLD2331完成动态LED显示驱动
  6. React App项目页面进出场动画
  7. tor screenrec屏幕录制+_ScreenFlow for mac(屏幕录制软件) v8.2.4中文版
  8. sqlserver 字符串拼接_VB6 连接SQL Server数据库实例
  9. Wifi Enable 启动过程
  10. 盘点常用的IDC综合业务、财务及用户管理平台
  11. ios 加速计效果实现
  12. 计算机的大于键盘哪里,怎样在键盘上打出大于等于号,小于等于号?键盘大于等于号怎么打?...
  13. Kindle dxg 越狱升级小记
  14. 城市网络安全态势感知工作思路探析
  15. SAP CO01(创建生产订单)/MIGO(发货投料)前台操作
  16. java怎样生成文档_关于如何生成Java文档
  17. BDD测试框架Spock概要
  18. visio中公式太小_串联管道/并联管道中调节阀可调比R的计算
  19. 单片机仿真器是什么?有什么作用?
  20. 鸿蒙发布会机型,爆料丨网曝华为鸿蒙升级机型名单,多款新品待发布

热门文章

  1. mysql 存储过程 嵌套if_mysql存储过程if嵌套if的写法
  2. 速递 | 在线教育行业 12 大核心场景案例全解析!
  3. 5.16 Stacks and Queues
  4. list.h在用户态下的应用
  5. 【面试题】C语言:模拟实现memcmp,试比较memcmp与strcmp,strncmp的区别
  6. 【Leetcode】Palindrome Number
  7. row height
  8. WHY MAKE ANOTHER APPLICATION AT ISSM?
  9. matlab kill
  10. 快速制作你的虚拟头像