P2032 「Poetize9」升降梯上

描述

开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道、一辆停在轨道底部的电梯、和电梯内一杆控制电梯升降的巨大手柄。
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层至少需要多长时间?

题解:

据说正解是分层SPFA?好像也可行。

我直接一个无脑DP,无限循环,也能过

之所以要无限循环是因为DP没有显性的先后关系,只好乱来了。。。

代码:

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<algorithm>
 6 #include<iostream>
 7 #include<vector>
 8 #include<map>
 9 #include<set>
10 #include<queue>
11 #include<string>
12 #define inf 1000000000
13 #define maxn 2000
14 #define maxm 100
15 #define eps 1e-10
16 #define ll long long
17 #define pa pair<int,int>
18 #define for0(i,n) for(int i=0;i<=(n);i++)
19 #define for1(i,n) for(int i=1;i<=(n);i++)
20 #define for2(i,x,y) for(int i=(x);i<=(y);i++)
21 #define for3(i,x,y) for(int i=(x);i>=(y);i--)
22 #define mod 1000000007
23 using namespace std;
24 inline int read()
25 {
26     int x=0,f=1;char ch=getchar();
27     while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
28     while(ch>=‘0‘&&ch<=‘9‘){x=10*x+ch-‘0‘;ch=getchar();}
29     return x*f;
30 }
31 int n,m,p,a[maxn],f[maxn][maxm];
32 int main()
33 {
34     freopen("input.txt","r",stdin);
35     freopen("output.txt","w",stdout);
36     n=read();m=read();
37     for1(i,m)a[i]=read();
38     for1(i,n)for1(j,m)f[i][j]=inf;
39     for1(i,m)if(!a[i])p=i;
40     for1(i,m)f[1][i]=abs(i-p);
41     bool flag=1;
42     while(flag)
43     {
44         flag=0;
45         for3(i,n,1)
46          for1(j,m)
47           {
48               int k=i-a[j];
49              if(k>n||k<1)continue;
50              for1(l,m)
51               if(f[k][l]+abs(l-j)+abs(a[j])*2<f[i][j])flag=1,f[i][j]=f[k][l]+abs(l-j)+abs(a[j])*2;
52           }
53         //for1(i,n)for1(j,m)cout<<i<<‘ ‘<<j<<‘ ‘<<f[i][j]<<endl;
54     }
55     int ans=inf;
56     for1(i,m)ans=min(ans,f[n][i]);
57     printf("%d\n",ans>=inf/2?-1:ans);
58     return 0;
59 }

时间: 2024-08-05 04:25:02

P2032 「Poetize9」升降梯上的相关文章

TYVJ P2032 「Poetize9」升降梯上 spfa最短路

%%%暴搜出奇迹%%%@SiriusRen 其实我刚开始题读错了,才导致我写图论... spfa跑最短路,开一个node记录状态(pair当然滋磁):所在楼层和槽的位置 以层数为1,槽在0的位置 为初始状态并进队,向每一个合法位置扩展,跑spfa,直到收敛. #include<cstdio> #include<iostream> #include<queue> #include<cstring> #include<cmath> #define R

TYVJ2032 「Poetize9」升降梯上

P2032 「Poetize9」升降梯上 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道.一辆停在轨道底部的电梯.和电梯内一杆控制电梯升降的巨大手柄. Nescafe之塔一共有N层,升降梯在每层都有一个停靠点.手柄有M个控制槽,第i个控制槽旁边标着一个数Ci,满足 C1<C2<C3<……<CM.如果Ci>0,表示手柄扳动到该槽时,电梯将

P2031 「Poetize9」升降梯口

3056: 升降梯口 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 43  Solved: 42[Submit][Status] Description 一 些探险家组队去探索神秘的Nescafe之塔.经过一番周折,探险队员们终于突破了塔门,来到了Nescafe之塔的一层大殿.而探险队员们想要拜访的四 大护法和塔之圣主据传都住在塔的高层,因此他们迅速奔向了大殿一侧的升降梯口.不过由于Nescafe之塔乃是一年一度封印和开启“Nescafe之杯” 的

「Poetize9」礼物运送

3055: 礼物运送 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 18  Solved: 12[Submit][Status] Description 机器人刚刚探查归来,探险队员们突然发现自己的脚下出现了一朵朵白云,把他们托向了空中.一阵飘飘然的感觉过后,队员们发现自己被传送到了一座空中花园. “远道而来的客人,我们是守护Nescafe之塔的精灵.如果你们想拜访护法和圣主的话,就要由我们引路.因此,你们是不是该给我们一点礼物呢T_T?” 队员们

Linux 小知识翻译 - 「Linux」和病毒

据说,「Linux」系统上的病毒要远远少于Windows系统上病毒.从2种系统的普及度来看,这是很显然的, 「Linux」的使用人群很少,所以「Linux」上的病毒的扩散时,受害的范围也不大. 但是,认为「Linux上不存在病毒」,「Linux不需要病毒防范策略」等等都是不对的. Linux感染病毒的情况也是有的,不仅如此,在Linux服务器上情况更为显著,比如一个windows平台的病毒混入了Linux服务器中, 其他连接此Linux服务器的Windows系统也有可能会感染这个病毒的. 使用L

从 Spring Cloud 看一个微服务框架的「五脏六腑」

原文:https://webfe.kujiale.com/spring-could-heart/ Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 注:Spring Boot 简单理解就是简化 Spring 项目的搭建.配置.组合的框架.因为与构建微服务本身没有直接关系,所以本文不对 Spring Boot 进行展开.另外本文有一些例子涉及到 Spring 和 Spring Boot,建议先了解一下 Spring 和 Spri

上「知乎」,与 SAP 一同探索「独角兽」成长的甜蜜与烦恼

独角兽企业,一般指创办时间相对较短.估值超过10亿美元的创业企业.如今,全球独角兽公司榜单上的中国面孔越来越多.2017年,全球十大独角兽企业中,将近一半来自中国. 这些如同「开挂」一般迅速成长的企业,虽然饱受众多媒体与用户的青睐,更是资本市场的宠儿,但也不免要经历其它企业一般成长的阵痛.尤其是在「一夜长大」的过程中,独角兽们历经了员工数量的迅速膨胀.组织机构的急速扩张.业务方向的激烈动荡,甚至是外部环境的风云变幻. 可是他们终究成长了起来,如同许多年前第一把点燃中国民营经济之火的初代创业者一般

「SCOI2012」喵星球上的点名

「SCOI2012」喵星球上的点名 填一个很久以前用 \(\texttt{AC}\) 自动机没填上的坑. 关于本题,能够通过本题的算法很多,这里作者采用的是后缀数组+树状数组的做法. 首先有一个显然的结论:若 \(s_2\) 是 \(s_1\) 的子串,则 \(s_1\) 一定存在一个后缀与 \(s_2\) 的最长公共前缀为 \(|s_2|\). 我们将读入的姓.名.询问串连成一个整体,形成一个字符串 \(s\),且在每一个姓.名.询问串中插入一个不存在文本中的字符,且保证询问串后插入的比姓名串

「随笔」基于当下的思考

马德,说好的技术blog,变成日记本了... 下午的时候莫名其妙的感到很颓废,因为自己的不够强大感到忧虑和危机感十足.现在每每行走在技术的道路上,常觉得如履薄冰,如芒在背. 上大学之前和现在的心态其实差别挺大的,视野的开阔远远不止局限于自己的脚下.不过,这里的「上大学之前」只是一个时间描述词,并不觉得大学是最适合学习的地方,我很失望. 世界上的人无论性别,区域,宗教,兴趣爱好,总可以在互联网上找到志趣相同的人,总是可以不断打破自己的常识与惯性思维.总是有在相同领域比自己更强的人,挺好的. 关于知