#C07TL06P05. C07T.L06.实战训练六.题目5.天际线

C07T.L06.实战训练六.题目5.天际线

题目描述

日落时分, Bessie 沿着地平线向远处的城市望去,夕阳中的城市呈现出如下图所示的明暗图形:

..........................
.....XX.........XXX.......
.XXX.XX.......XXXXXXX.....
XXXXXXXXXX....XXXXXXXXXXXX

其中, '.' 代表刺眼的光线,而 'X' 则代表挡住光线的建筑。

Bessie 想知道,至少要有多少座建筑,才能形成如上的图形。它对建筑的定义是:下底完全在地面上的长方体。显然,在上图的图形中,一个建筑将挡住一个下底在底边上的矩形区域的光线,不同的建筑在图形中可能有重叠。 Bessie 很快得出了答案: 6 座。如下图:

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


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

然而,对于一个比上图更复杂的图形,有没有办法很快地得到形成它所需的最少的建筑数呢? Bessie 现在以 1 瓶牛奶为报酬,雇佣你来解决这个问题。

输入格式

Bessie 将以一种很古怪的方式来描述它所看到的图形。

将用于表示图形的网格(如同题目描述中的那个图形一样)的列从左到右分别编号为 1 , 2 , ... W , ( 1 <= W <= 1,000,000 ), Bessie 将从左到右扫描一次图形,如果碰到有两个相邻的列的阴影部分的高度不同,那么 Bessie 将告诉你之两列中右边那列的编号 AiA_i 和它的阴影的高度 BiB_i 。Bessie给你的数据就是 N ( 1 <= N <= 50,000 ) 个数对(Ai,BiA_i,B_i ) ( 1 <= i <= N , 0 <= BiB_i <= 500,000 ) 。其中比较特殊的是第一个数对(A1,B1A_1,B_1),它将被用来表示第一列的阴影高度,所以 A1A_1 一定等于 1 。例如,对上面题目描述中的图形, Bessie 将给你 10 个数对 (1,1), (2,2), (5,1), (6,3), (8,1), (11,0), (15,2),(17,3), (20,2), (22,1)。

第一行将是两个正整数 N 和 W ,以下 N 行每行有两个数对 AiA_iBiB_i 。其中 AiA_i 严格递增 ( 因为 Bessie 是从左到右进行描述的 )。

输出格式

一个整数,即最少需要的建筑的个数。

样例

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