#P1998. 升降梯上

    ID: 1023 传统题 文件IO:tk 1000ms 512MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>进阶指南0x6B 图论 总结与练习习题

升降梯上

Nescafe 28 升降梯上 (updown.pas/c/cpp) 题目描述 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘 的是一条直通塔顶的轨道、一辆停在轨道底部的电梯、和电梯内一杆控制电梯升降的巨大手 柄。 Nescafe之塔一共有 N层,升降梯在每层都有一个停靠点。手柄有 M个控制槽,第 i 个控制槽旁边标着一个数 Ci,满足 C1<C2<C3<„„<CM。如果 Ci>0,表示手柄扳动到该槽 时,电梯将上升 Ci层;如果 Ci<0,表示手柄扳动到该槽时,电梯将下降-Ci层;并且一定 存在一个 Ci=0,手柄最初就位于此槽中。注意升降梯只能在 1~N层间移动,因此扳动到使 升降梯移动到 1层以下、N层以上的控制槽是不允许的。 电梯每移动一层,需要花费2秒钟时间,而手柄从一个控制槽扳到相邻的槽,需要花费 1秒钟时间。探险队员现在在 1层,并且想尽快到达 N层,他们想知道从 1层到 N层至少 需要多长时间? 输入格式 第一行两个正整数 N、M。 第二行 M个整数 C1、C2„„CM。 输出格式 输出一个整数表示答案,即至少需要多长时间。若不可能到达输出-1。 样例输入 6 3 -1 0 2 样例输出 19 样例说明 手柄从第二个槽扳到第三个槽(0扳到 2) ,用时1秒,电梯上升到 3层,用时 4秒。 手柄在第三个槽不动,电梯再上升到 5层,用时 4秒。 手柄扳动到第一个槽(2扳到-1) ,用时2秒,电梯下降到 4层,用时 2秒。 手柄扳动到第三个槽(-1扳倒 2) ,用时2秒,电梯上升到 6层,用时 4秒。 总用时为(1+4)+4+(2+2)+(2+4)=19秒。 Nescafe 28 数据范围与约定 对于 30% 的数据,满足 1≤N≤10,2<=M<=5。 对于 100% 的数据,满足 1≤N≤1000,2<=M<=20,-N<C1<C2<„„<CM<N。