%%%暴搜出奇迹%%%@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=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
}
struct node{
int u,pos;
node() {}
node(int uu,int ppos):u(uu),pos(ppos) {}
}e[];
queue<node>q;
bool vis[][];
int n,m,z,ans=0x3f3f3f3f,d[][],a[];
inline void spafa() {
memset(d,0x3f,sizeof(d));
q.push(node(,z)); vis[][z]=true,d[][z]=;
while(q.size()) {
R u=q.front().u,pos=q.front().pos; q.pop(); vis[u][pos]=false;
for(R i=;i<=m;++i) {
if(u+a[i]<=) continue; if(u+a[i]>n) break;
if(d[u+a[i]][i]>d[u][pos]+abs(i-pos)+abs(a[i])*) {
d[u+a[i]][i]=d[u][pos]+abs(i-pos)+abs(a[i])*;
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=;i<=m;++i) {a[i]=g(); if(!a[i]) z=i;}
spafa(); for(R i=;i<=m;++i) ans=min(ans,d[n][i]);
if(ans==0x3f3f3f3f) printf("-1\n");
else printf("%d",ans);
}

2019.04.11

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

  1. P2032 「Poetize9」升降梯上

    描述 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道.一辆停在轨道底部的电梯.和电梯内一杆控制电梯升降的巨大手柄.Nescafe之塔一共有N层,升降 ...

  2. TYVJ2032 「Poetize9」升降梯上

    P2032 「Poetize9」升降梯上 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道, ...

  3. 「Poetize9」升降梯口

    3056: 升降梯口 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 43  Solved: 42[Submit][Status] Description ...

  4. 「BJOI2018」链上二次求和

    「BJOI2018」链上二次求和 https://loj.ac/problem/2512 我说今天上午写博客吧.怕自己写一上午,就决定先写道题. 然后我就调了一上午线段树. 花了2h找到lazy标记没 ...

  5. tyvj P2018 「Nescafé26」小猫爬山 解题报告

    P2018 「Nescafé26」小猫爬山 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山.经 ...

  6. [Tyvj2032]升降梯上(最短路)

    [Tyvj2032]升降梯上 Description 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道.一辆停在轨道底部的电梯.和电梯内一杆控制电梯升 ...

  7. 2090. 「ZJOI2016」旅行者 分治,最短路

    2090. 「ZJOI2016」旅行者 链接 loj 思路 \((l,mid)(mid+1,r)\).考虑跨过mid的贡献. 假设选的中间那条线的点为gzy,贡献为\(dis(x,gzy)+dis(g ...

  8. 「Poetize9」礼物运送

    3055: 礼物运送 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 18  Solved: 12[Submit][Status] Description ...

  9. 【LOJ】#2512. 「BJOI2018」链上二次求和

    题面 题解 转化一下可以变成所有小于等于r的减去小于等于l - 1的 然后我们求小于等于x的 显然是 \(\sum_{i = 1}^{n} \sum_{j = 1}^{min(i,x)} sum[i] ...

随机推荐

  1. listen 58

    Different Brain Regions Handle Different Music Types (Vivaldi) versus (the Beatles) . Both great. Bu ...

  2. Python 微信通知 先挖个坑

    桑心病狂,试试把报警信息发到微信上 原文  https://segmentfault.com/a/1190000009717078  

  3. python打印字体颜色

        格式:\033[显示方式;前景色;背景色m 显示方式           意义-------------------------0                终端默认设置1         ...

  4. hdu3739 Anti LIS[最小割]

    长度为 n≤1000 的数列 ai,其中最长上升子序列的长度为 s.至少删去多少数使得最长上升子序列的长度小于 s. 其实这题和那个求有多少不重叠LIS是一样答案的. 先放个图. 图丑别说我. 原网络 ...

  5. ACM学习历程—HDU 4726 Kia's Calculation( 贪心&&计数排序)

    DescriptionDoctor Ghee is teaching Kia how to calculate the sum of two integers. But Kia is so carel ...

  6. 洛谷P1092虫食算——深搜

    题目:https://www.luogu.org/problemnew/show/P1092 剪枝1:从右往左.从上往下按字母出现顺序搜索: 剪枝2:同一列前两个数字确定,可直接算出第三个数字并判断: ...

  7. python script

    1.tab键自动补全(每次导入时要将脚本的路径加入到sys.path中) import sysimport readlineimport rlcompleterimport atexitimport ...

  8. python--面向对象(最全讲解)

    http://www.cnblogs.com/Eva-J/articles/7293890.html 阅读目录 楔子 面向过程vs面向对象 初识面向对象 类的相关知识 对象的相关知识 对象之间的交互 ...

  9. MYSQL学习二 关于左连接

    工作中有如下的SQL, 针对A.ID ='abcdefg', left  join  B和C两个表,来查找其他信息.就算是B和C中没有任何满足条件的记录,最后结果也肯定不是空.因为A.ID ='abc ...

  10. java的clone()的使用

    clone()方法的约定 首先明确的是clone()是object的方法.Cloneable接口没有任何方法,它只起到标识的作用.(java的原型模式有用到) Cloneable接口的目的是作为对象的 ...