Krydom: 暁の水平线に胜利を刻むのです

ソロモンの悪夢、見せてあげる!

@krydom8月前

01/1
21:42
基础算法

[bzoj 4723] [POI2017]Flappy Bird

♦♦♦♦♦♦   Description   ♦♦♦♦♦♦

《飞扬的小鸟》是一款风靡的小游戏。在游戏中,小鸟一开始位于(0,0)处,它的目标是飞到横坐标为X的某个位置上。每一秒,你可以选择点击屏幕,那么小鸟会从(x,y)飞到(x+1,y+1),或者不点击,那么小鸟会飞到(x+1,y-1)。在游戏中还有n个障碍物,用三元组(x[i],a[i],b[i])描述,表示在直线x=x[i]上,y<=a[i]或者y>=b[i]的部分都是障碍物,碰到或者擦边都算游戏失败。请求出小鸟从(0,0)飞到目的地最少需要点击多少次屏幕。

♦♦♦♦♦♦   Input   ♦♦♦♦♦♦

第一行包含两个整数n(0<=n<=500000),X(1<=n<=10^9)。
接下来n行,每行三个整数x[i],a[i],b[i](0<x[i]<X,-10^9<=a[i]<b[i]<=10^9)。
数据保证x[i]<x[i+1]。

♦♦♦♦♦♦   Output   ♦♦♦♦♦♦

如果无论如何都飞不到目的地,输出NIE,否则输出点击屏幕的最少次数。

♦♦♦♦♦♦   Sample Input   ♦♦♦♦♦♦

4 11
4 1 4
7 -1 2
8 -1 3
9 0 2

♦♦♦♦♦♦   Sample Output   ♦♦♦♦♦♦

5

♦♦♦♦♦♦   Hint   ♦♦♦♦♦♦

♦♦♦♦♦♦   题解  ♦♦♦♦♦♦

由于小鸟飞到一个点需要的点击数是确定的,所以只要对于每个柱子算出小鸟所能飞到的范围就好了

 

[bzoj 4723] [POI2017]Flappy Bird