题目描述 

  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. ServiceStack.Redis 使用链接池方法

    PooledRedisClientManager 1.RedisManage.cs public static class RedisManager { private static PooledRe ...

  2. C#索引器的用法

    索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的. 索引器和数组比较: (1)索引器的索引值(Index)类型不受限制 (2)索引器允许重载 ...

  3. java系列--过滤器

    在web.xml配置过滤器:过滤器一定要放在所以Servlet前面 过滤器的生命周期: 过滤器的应用: 1.编码格式 2.权限验证 3.数据库关闭

  4. localStorage eval script

    var globalEval =function(data) { (window.execScript || function(data){ window.eval.call(window,data) ...

  5. js控制div显示与隐藏

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. CentOS 6.6下JDK1.7安装与配置(Linux)经典入门详解案例

    最近用的linux较多,在网站找了一些关于linux环境下jdk安装的教程,过程是有的但是好多细节都没有表现出来,所以我花了点时间总结了一下,希望对大家都有帮助... CentOS下JDK1.7安装与 ...

  7. html标签的嵌套规则分析

    1.a标签最好不要嵌套块级元素,可以嵌套内联元素,但是不能嵌套a标签和input之类的标签.能嵌套的标签像,等等. 2.ul和ol的子元素不能是别的元素只能是li,不能是别的比如div等,但是li中可 ...

  8. HDU-1754-I Hate It(线段树,简单,不过好像有点问题)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1754 题目不难,不过开始我犯了一个低级错误,输入n,m,m代表操作的数目,我没有写了,写代码的时候,就 ...

  9. JSP中使用Taglib

    http://blog.163.com/jany_1016/blog/static/4604400620091112114127341/ http://blog.csdn.net/yuebinghao ...

  10. 初识SuperSocket

    有一些企业由于以前使用的操作系统是被淘汰的操作系统,例如OpenVMS.现需要将针对openvms开发的通讯程序进行移植到现在的windows操作系统上,通过一段时间的了解,现在需要花时间去找商业性的 ...