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

%%%暴搜出奇迹%%%@SiriusRen

其实我刚开始题读错了,才导致我写图论。。。

spfa跑最短路,开一个node记录状态(pair当然滋磁):所在楼层和槽的位置

以层数为1,槽在0的位置 为初始状态并进队,向每一个合法位置扩展,跑spfa,直到收敛。

#include<cstdio>
#include<iostream>
#include<queue>
#include<cstring>
#include<cmath>
#define R register int
using namespace std;
inline int g() {
    R ret=0,fix=1; register char ch; while(!isdigit(ch=getchar())) fix=ch==‘-‘?-1:fix;
    do ret=ret*10+(ch^48); while(isdigit(ch=getchar())); return ret*fix;
}
struct node{
    int u,pos;
    node() {}
    node(int uu,int ppos):u(uu),pos(ppos) {}
}e[1010];
queue<node>q;
bool vis[1010][24];
int n,m,z,ans=0x3f3f3f3f,d[1010][24],a[24];
inline void spafa() {
    memset(d,0x3f,sizeof(d));
    q.push(node(1,z)); vis[1][z]=true,d[1][z]=0;
    while(q.size()) {
        R u=q.front().u,pos=q.front().pos; q.pop(); vis[u][pos]=false;
        for(R i=1;i<=m;++i) {
            if(u+a[i]<=0) continue; if(u+a[i]>n) break;
            if(d[u+a[i]][i]>d[u][pos]+abs(i-pos)+abs(a[i])*2) {
                d[u+a[i]][i]=d[u][pos]+abs(i-pos)+abs(a[i])*2;
                if(vis[u+a[i]][i]) continue;
                vis[u+a[i]][i]=true; q.push(node(u+a[i],i));
            }
        }
    }
}
signed main() {
    freopen("up.in","r",stdin);
    freopen("up.out","w",stdout);
    n=g(),m=g();
    for(R i=1;i<=m;++i) {a[i]=g(); if(!a[i]) z=i;}
    spafa(); for(R i=1;i<=m;++i) ans=min(ans,d[n][i]);
    if(ans==0x3f3f3f3f) printf("-1\n");
    else printf("%d",ans);
}


2019.04.11

原文地址:https://www.cnblogs.com/Jackpei/p/10687209.html

时间: 2024-10-08 16:32:57

TYVJ P2032 「Poetize9」升降梯上 spfa最短路的相关文章

P2032 「Poetize9」升降梯上

描述 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道.一辆停在轨道底部的电梯.和电梯内一杆控制电梯升降的巨大手柄.Nescafe之塔一共有N层,升降梯在每层都有一个停靠点.手柄有M个控制槽,第i个控制槽旁边标着一个数Ci,满足C1<C2<C3<……<CM.如果Ci>0,表示手柄扳动到该槽时,电梯将上升Ci层:如果Ci<0,表示手柄扳动到该槽时,电梯将下降-Ci层:并且一定存在一个Ci=0,手柄最初就位于此槽中.注意升降

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之杯” 的

tyvj P2018 「Nescaf&#233;26」小猫爬山 解题报告

P2018 「Nescafé26」小猫爬山 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 描述 Freda和rainbow只好花钱让它们坐索道下山.索道上的缆车最大承重量为W,而N只小猫的重量分别是C1.C2……CN.当然,每辆缆车上的小猫的重量之和不能超过W.每租用一辆缆车,Freda和rainb

「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\),且在每一个姓.名.询问串中插入一个不存在文本中的字符,且保证询问串后插入的比姓名串