3634: 移动(第二轮04)
题目描述
牛牛被困在了一个房间里,他可以看到房间的出口,但是想要到达出口,需要经 过 n 道闸门。我们可以根据这些闸门离牛牛的距离进行编号, 离牛牛最近的闸门 记为 1 号闸门,离牛牛最远的记为n号闸门。
牛牛每秒都可以选择前进到下一闸门,后退到上一闸门,或者原地不动。(从起点 到第一道闸门,从第n道闸门到出口的时间也是一秒)
这些闸门在一些时刻是关闭的,无法通行,剩下的时刻是开启的,可以通行。
注意:如果牛牛所在的位置有一个闸门即将关闭,他在此时选择原地不动,就会 被闸门夹到,变成牛排。牛牛想在不变成牛排的前提下走到出口, 他想知道最短 需要多少秒才能走到出口,如果他永远无法走到出口,输出-1。
在每一秒内,首先牛牛进行移动,然后闸门进行开/关的动作。
输入
第一行给出 N, M,分别代表有N道闸门, M个信息
接下来有 M 行,每行代表一个闸门关闭的信息,包含三个数字 abc,代表第 a 道闸门会在 [b, c]的时间内关闭
保证这些信息之间不相交。(即不会有某一道闸门在[b1, c1]和[b2, c2]的时间关闭, 且 , b1 < b2 < c1 。
输出
样例输入 复制
4 2
1 2 50
3 2 5
样例输出 复制
8
提示
【样例 1 说明】
牛牛在 1 秒时到达 1 号闸门, 2 秒时到达 2 号闸门,等到 6 秒时到达 3 号闸门,
7 秒到达 4 号闸门, 8 秒到达出口
【数据范围】
20% 的数据,满足 1 ≤ N, M ≤ 20
60% 的数据,满足 1 ≤ N, M ≤ 2000
100% 的数据,满足 1 ≤ N, M ≤ 100000, 1 ≤ a ≤ N, 1 ≤ b ≤ c ≤ 10^9