1163. 【普及组模拟赛】投影(skyline)

1163. 【普及组模拟赛】投影(skyline) 

题目描述

   一天你对着眼前的景物拍了一张照,这个相机很特别,有建筑物的地方显示“X”,没有建筑物的地方显示为“.”,假设每个建筑都是块状的,照片长W(1<=W<=1,000,000),用N(1<=N<=50,000)对平面坐标(x,y)( 1 <= x <= W, 0<= y <= 500,000)描述照片中建筑物高度发生变化的位置,你的任务是计算出最少需要多少个建筑才能形成该照片。
如下图:

图片最少需要6个建筑,


输入

第一行: 两个空格隔开的整数N,W;
第2到N+1行:两个空格隔开的整数x和y,表示发生改变的点的坐标。输入中x是严格递增的而且第1个x一定是1。

输出

输出最少需要多少建筑才能形成该照片。

样例输入

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

样例输出

6


思路就是找高度不同的点,只要比前面高度高就加一,小的话就看以前有没有这个高度,没有就加一,然后就可以有结果了

 

const
 maxn=50000;
var
 a,b:array[0..maxn] of longint;
 i,j,n,w,x,y,ans,p:longint;
begin
readln(n,w);
 fori:=1 to n do
 begin
 readln(x,y);
  while(p>0) and (a[p]>y) do dec(p);
  if((p=0) or (a[p]<y)) and (y>0) then
  begin
  inc(ans);
  inc(p);
  a[p]:=y;
  end;
 end;
 writeln(ans);
end.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值