zoukankan      html  css  js  c++  java
  • P1135 奇怪的电梯

    大致题意:

    • 求从A楼致B楼要按几次按钮,若到达不了,则输出-1,
    • 第i层上下的楼层数为k[i]层。

    基本思路:

    • 毒瘤Luogu官方机器人,做梦都能梦到题目
    • 先从A层楼开始猛虎下山、潜龙出渊、气吞山河、排山倒海般的进行bfs操作,
    • 若是到了B层楼则输出步数,若是队列都出尽了还没到就说明到不了B层楼,输出-1。

    Code:

    //超·远古时期·恐龙时代の码风
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <queue>
    #include <stack>
    #include <map>
    #include <set>
    #define ll long long
    #define ull unsigned long long
    #define For(i,a,b) for(register unsigned long long i=(a);i<(b);++i)
    #define Rep(i,a,b) for(register unsigned long long i=(a);i>=(b);--i)
    using namespace std;
    ll n,a,b,s,m[210];
    ll pd[210];
    queue<ll> k,step;//k记录楼层,step记录步数
    void bfs(){
        k.push(a);
        step.push(0);//进队列
        pd[a]=1;//标记A楼层已经到过
        while(k.size()){
            ll len=k.size();
            For(i,0,len){
                s=k.front();
                ll step_=step.front();//记录一下
                if(s==b){//若是到了B层楼
                    cout<<step_;//输出
                    return;//结束
                }
                if(s-m[s]>0&&pd[s-m[s]]!=1){//若下楼的层数合法且没去过
                    k.push(s-m[s]);
                    step.push(step_+1);//进队列
                    pd[s-m[s]]=1;//标记
                }
                if(s+m[s]<=n&&pd[s+m[s]]!=1){//若上楼的层数合法且没去过
                    k.push(s+m[s]);
                    step.push(step_+1);//进队列
                    pd[s+m[s]]=1;//标记
                }
                k.pop();step.pop();//出队列
            }
        }
    }
    int main(){
        cin>>n>>a>>b;
        For(i,1,n+1)cin>>m[i];//输入
        bfs();
        if(s!=b)cout<<-1;//若还是没到B层楼,输出-1
        return 0;
    }
    
  • 相关阅读:
    CVE-2017-11826:Office Open XML 标签嵌套解析混淆漏洞
    未授权访问漏洞总结
    Linux提权—脏牛漏洞(CVE-2016-5195)
    Linux提权
    (翻译)OpenDocument and Open XML security (OpenOffice.org and MS Office 2007)
    SSH后门万能密码
    Linux中使用gdb dump内存
    在 x64dbg 中设置条件断点和条件记录断点
    Linux中的.bash_ 文件详解
    Photoshop 第二课 工具-钢笔的使用
  • 原文地址:https://www.cnblogs.com/FUXyao/p/12885817.html
Copyright © 2011-2022 走看看