题目名称 1238. [Poetize 9] 升降梯上
输入输出 updown.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 GravatarMakazeu 于2012-10-30加入
开放分组 全部用户
提交状态
分类标签
最短路 搜索法 图论
分享题解
通过:36, 提交:104, 通过率:34.62%
Gravatarop_组撒头屯 100 0.000 s 0.00 MiB C++
Gravatar┭┮﹏┭┮ 100 0.000 s 0.00 MiB C++
Gravatar┭┮﹏┭┮ 100 0.000 s 0.00 MiB C++
Gravatar┭┮﹏┭┮ 100 0.000 s 0.00 MiB C++
Gravatarandy1128 100 0.022 s 13.89 MiB C++
Gravatar蒟蒻苯蒻ovo 100 0.022 s 15.95 MiB C++
GravatarRichard 100 0.024 s 13.67 MiB C++
Gravatar落痕 100 0.030 s 13.83 MiB C++
Gravatar梦那边的美好ET 100 0.036 s 3.39 MiB C++
Gravatar苏轼 100 0.048 s 0.49 MiB Pascal
关于 升降梯上 的近10条评论(全部评论)
-1
Gravatar┭┮﹏┭┮
2023-12-24 19:46 9楼
百题留念 这是一道求最短路的题 关键在于建图以及对槽的处理,不过也可以用dp来写,思路启发自洛谷
GravatarRichard
2019-07-08 20:28 8楼
如果你wa了第一个点,那一定是你没输出-1_(:з」∠)_
GravatarDeacep
2019-07-06 17:43 7楼
Gravatar梦那边的美好ET
2019-07-06 15:06 6楼
HAHAHAHA,目睹了HSwa了
GravatarDK
2019-07-06 14:58 5楼
多明显,我的程序最快。
题解
Gravatarfeng
2012-11-02 10:59 4楼
题读不懂?语文没学好?OI道路遇到瓶颈?还不快上http://paulinsider.at.ua/news/poetize_9/2012-10-31-20上找题解。。http://paulinsider.at.ua是你最最最满意的解题报告网!
Gravatar苏轼
2012-10-31 11:48 3楼
tim[][]数组启发自“激光电话”,无
有点贪心的思想启发自“迪杰斯特拉”算法求最短路
tim[i][j]表示到第i层第j档这种状态的最小时间,初值为正无穷,f[i][零档]=0
从0开始扫描时间点并扩展,更新扩展到的点,直到扫描到了结束楼层(扩展到不算),说明已得到最优解。
GravatarTruth.Cirno
2012-10-31 10:55 2楼
この問題の算法(演算手順、サンポウ、アルゴリズム)はSPFAです。
GravatarMakazeu
2012-10-30 16:11 1楼

1238. [Poetize 9] 升降梯上

★   输入文件:updown.in   输出文件:updown.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】

开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道、一辆停在轨道底部的电梯、和电梯内一杆控制电梯升降的巨大手柄。
$Nescafe$之塔一共有$N$层,升降梯在每层都有一个停靠点。手柄有$M$个控制槽,第$i$个控制槽旁边标着一个数$C_i$,满足$C_1<C_2<C_3<……<C_M$。如果C_i>0,表示手柄扳动到该槽时,电梯将上升$C_i$层;如果$C_i<0$,表示手柄扳动到该槽时,电梯将下降$-C_i$层;并且一定存在一个$C_i=0$,手柄最初就位于此槽中。注意升降梯只能在$1~N$层间移动,因此扳动到使升降梯移动到$1$层以下、$N$层以上的控制槽是不允许的。
电梯每移动一层,需要花费$2$秒钟时间,而手柄从一个控制槽扳到相邻的槽,需要花费$1$秒钟时间。探险队员现在在$1$层,并且想尽快到达$N$层,他们想知道从$1$层到$N$层至少需要多长时间?

【输入格式】

第一行两个正整数$N、M$。
第二行M个整数$C_1、C_2……C_M$。

【输出格式】

输出一个整数表示答案,即至少需要多长时间。若不可能到达输出-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$秒。

对于$30$%的数据,满足$1≤N≤10,2<=M<=5$。
对于$100$%的数据,满足$1≤N≤1000,2<=M<=20,-N<C_1<C_2<……<C_M<N$。