[HDU 4252] A Famous City[单调队列]
来源:互联网 发布:淘宝美工岗位职责 编辑:程序博客网 时间:2024/09/21 08:15
题意:给出照片中从左到右的建筑物高度,判断最少可能有几栋楼.(矮的楼可以被高的挡住)
思路:
单调队列.
因为只要出现矮的楼,那么在它之前的比它高的楼都可以被确定是独立的楼,将它们出队,并计数.
相同高度的视为同一楼.
出现更高的楼的话就加入队列.
最后队伍里剩下的楼一并计数.
需要注意当队伍为空时,或者输入楼高为0时需要特殊处理,否则将越界.
#include <cstdio>#include <cstring>using namespace std;const int MAXN = 100005;int main(){ int q[MAXN],rear,cnt,n,cas = 0; while(scanf("%d",&n)==1) { int t,sub = 0; cnt = 0; rear = 0; while(sub<n && scanf("%d",&t) && !t ) sub++; if(sub==n) { printf("Case %d: 0\n",++cas); continue; } q[rear] = t; for(int i=sub+1;i<n;i++) { scanf("%d",&t); if(rear==-1) { if(t) q[++rear] = t; continue; } while(t<q[rear]) { rear--; cnt++; if(rear==-1) break; } if(rear==-1) { if(t) q[++rear] = t; continue; } if(t>q[rear]) q[++rear] = t; } printf("Case %d: %d\n",++cas,cnt+rear+1); }}
- [HDU 4252] A Famous City[单调队列]
- HDU:4252 A Famous City(单调栈)
- hdu 4252 A Famous City
- HDU 4252A Famous City
- HDU 4252 A Famous City
- HDOJ 4252 A Famous City 单调栈
- nyoj-140-A Famous City//hdu-4252-A Famous City
- HDU 4252 A Famous City 解题报告
- HDU/HDOJ----4252 A Famous City
- hdu 4252 A Famous City (map+rmq)
- A Famous City(单调栈)
- HDU 4252A Famous City(弱数据可以使用贪心)
- HDU4252:A Famous City
- HDU4252 A Famous City
- HDU4252:A Famous City
- 杭电OJ第4252题 A Famous City
- hdu 1505 City Game 最大矩形面积 单调队列
- City Skyline --(单调队列)
- 状态压缩动态规划
- POJ2773-Happy 2006
- 【Android LibGDX游戏引擎开发教程】第01期:LibGDX的详细介绍
- ASP.NET MVC4自定义分页
- Exchange 2007 中的电子邮件地址策略和接受域
- [HDU 4252] A Famous City[单调队列]
- 2013 - ECJTU 暑期训练赛第七场-problem-G
- 在for循环中使用数组
- hdu 1394 Minimum Inversion Number
- hdu 4474 数位搜索
- UVA 11044 (13.08.07)
- 门面设计模式
- Halloween treats
- PMP项目管理知识体系——第六章 项目时间管理