3634: 移动(第二轮04)

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

牛牛被困在了一个房间里,他可以看到房间的出口,但是想要到达出口,需要经 过 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

来源/分类