题目描述 

  Farmer John的牛们认为,太阳升起的那一刻是一天中最美好的,在那时她们
可以看到远方城市模糊的轮廓。显然,这些轮廓其实是城市里建筑物模糊的影子。
  建筑物的影子实在太模糊了,牛们只好把它们近似地看成若干个边长为1单位
长度的正方体整齐地叠在一起。城市中的所有建筑物的影子都是标准的矩形。牛们
的视野宽W个单位长度(1<=W<=1,000,000),不妨把它们按从左到右划分成W列,并
按1~W编号。建筑物的轮廓用N组(1<=N<=50,000)数给予描述,每组数包含2个整数
x、y(1<=x<=W,0<=y<=500,000),表示从第x列开始,建筑物影子的高度变成了y。
(也就是说,第x[i]列到第x[i+1]-1列中每一列建筑物影子的高度都是y[i]个单位
长度)

  贝茜想知道这座城市里最少有多少幢建筑物,也就是说,这些影子最少可以由
多少个矩形完全覆盖。当然,建筑物的影子可以有重叠。请你写一个程序帮她计算
一下。

城市的轮廓可能是这样:
..........................
.....XX.........XXX.......
.XXX.XX.......XXXXXXX.....
XXXXXXXXXX....XXXXXXXXXXXX

于是它可以用(1,1),(2,2),(5,1),(6,3),(8,1),(11,0),(15,2),(17,3),(20,2),(22,1)
这10组数进行描述。

不难看出,这座城市里最少有6幢建筑物。以下是这些建筑物的一种分布的可能:

..........................  ..........................
.....22.........333.......  .....XX.........XXX.......
.111.22.......XX333XX.....  .XXX.XX.......5555555.....
X111X22XXX....XX333XXXXXXX  4444444444....5555555XXXXX

..........................
.....XX.........XXX.......
.XXX.XX.......XXXXXXX.....
XXXXXXXXXX....666666666666

具体图形请粘贴到记事本里会对齐。

样例输入:

10 26
1 1
2 2
5 1
6 3
8 1
11 0
15 2
17 3
20 2
22 1

输出:

6

思路:

这到题是一个单调栈的题,就是让轮廓的高度依次进栈,如果刚刚进入的高度小于栈顶的高度,就让栈顶出栈,在比较他和栈顶的高度,如果相等则ans++;最后用n-ans得出答案,因为楼全是矩形,所以奶牛看到的n个高度是矩形重叠形成的,所以用看到的总高度减去重叠的数,就得出有几栋楼了。

代码如下:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int stack[],top=;
int main()
{
int n,w;
cin>>n>>w;
int ans=;
stack[++top]=;
for(int i=;i<=n;i++)
{
int x,y;
cin>>x>>y;
while(top&&stack[top]>=y)
{
if(stack[top]==y)
ans++;
top--;
}
stack[++top]=y;
}
cout<<n-ans<<endl;
return ;
}

p1154 地平线的更多相关文章

  1. 1645: [Usaco2007 Open]City Horizon 城市地平线

    1645: [Usaco2007 Open]City Horizon 城市地平线 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 315  Solved: ...

  2. BZOJ_1654_[Usaco2007 Open]City Horizon 城市地平线_扫描线

    BZOJ_1654_[Usaco2007 Open]City Horizon 城市地平线_扫描线 Description N个矩形块,交求面积并. Input * Line 1: A single i ...

  3. | 线段树-地平线horizon

    [题目描述]:在地平线上有n个建筑物.每个建筑物在地平线上可以看成一个下边界和地平线重合的矩形.每个建筑物有三个描述(Li ,Ri,Hi),分别表示该建筑物的左边界,右边界,高度.输出输出这些建筑物在 ...

  4. bzoj1645 / P2061 [USACO07OPEN]城市的地平线City Horizon(扫描线)

    P2061 [USACO07OPEN]城市的地平线City Horizon 扫描线 扫描线简化版 流程(本题为例): 把一个矩形用两条线段(底端点的坐标,向上长度,添加$or$删除)表示,按横坐标排序 ...

  5. 洛谷P1154 奶牛分厩

    P1154 奶牛分厩 173通过 481提交 题目提供者该用户不存在 标签高性能 难度普及- 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨论 测试点3??? 求助!超时了 我抗议 ...

  6. 【BZOJ1645】[Usaco2007 Open]City Horizon 城市地平线 离散化+线段树

    [BZOJ1645][Usaco2007 Open]City Horizon 城市地平线 Description Farmer John has taken his cows on a trip to ...

  7. 线段树+扫描线【bzoj1645】[USACO07OPEN]城市的地平线City Horizon

    Description 约翰带着奶牛去都市观光.在落日的余晖里,他们看到了一幢接一幢的摩天高楼的轮廓在地平线 上形成美丽的图案.以地平线为 X 轴,每幢高楼的轮廓是一个位于地平线上的矩形,彼此间可能有 ...

  8. 洛谷——P1154 奶牛分厩

    P1154 奶牛分厩 题目描述 农夫约翰有N(1<=N<=5000)头奶牛,每头奶牛都有一个唯一的不同于其它奶牛的编号Si,所有的奶牛都睡在一个有K个厩的谷仓中,厩的编号为0到K-1.每头 ...

  9. 2020秋招嵌入式面经——地平线、小米、CVTE、大华、绿米

    地平线提前批 一面凉: 投递简历过程:官网投递9月份之前投的都是提前批,投了北京.上海.南京地区的嵌入式软件研发岗,北京和上海的都被筛掉了,南京的捞了我,hr小姐姐打电话邀约面试. 一面凉: 电话面试 ...

随机推荐

  1. UVa 336 - A Node Too Far

    题目大意:在计算机网络中,每条信息都有一个TTL值,在信息到达一个节点时,TTL值首先减1,如果TTL为0,则丢弃该信息报文.给一个网络的配置,给定源点和TTL值,判断该网络中有多少节点不可到达. 无 ...

  2. 12.TCP的成块数据流

    1.滑动窗口协议             TCP滑动窗口的可视化表示       我们将字节从1到11进行标号,接收方通告的窗口称为提供的窗口,它覆盖了第4字节到第9字节的数据,且通告窗口大小为6.发 ...

  3. spark RDD编程,scala版本

    1.RDD介绍:     RDD,弹性分布式数据集,即分布式的元素集合.在spark中,对所有数据的操作不外乎是创建RDD.转化已有的RDD以及调用RDD操作进行求值.在这一切的背后,Spark会自动 ...

  4. Spark中的wordCount程序实现

    import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.apache.s ...

  5. JMeter使用代理录制脚本

    用JMeter做接口测试,有时候接口数量比较多,用录制方式可以节省很多时间,录制接口可以配合badboy使用,但是badboy访问的浏览器是基于ie6的,基本上现在的网站不会对ie6做兼容了,使用代理 ...

  6. oralce

    1.对数据库SQL2005.ORACLE熟悉吗?   SQL2005是微软公司的数据库产品.是一个RDBMS数据库,一般应用在一些中型数据库的应用,不能跨平台.   ORACLE是ORACLE公司的数 ...

  7. Zepto.js-Ajax 请求

    Ajax 请求 执行Ajax请求.它可以是本地资源,或者通过支持HTTP access control的浏览器 或者通过 JSONP来实现跨域. 引入Ajax模块 <script src=&qu ...

  8. MySQL5.6生产库自动化安装部署

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://suifu.blog.51cto.com/9167728/1846671 自动化运 ...

  9. mysql 常用技巧

    1.正则使用 比 LIKE 会牺牲很多的系统资源 尽量不要用 正则的语法和JS PHP 差不多 select * from t1 where email REGEXP "@163[,.]co ...

  10. ejb ql 返回object

    String sqlStr="select t.car_kind,count(t) from table1 t where t.jb_date='"+jb_date+"' ...