首页 > 其他分享 >[ABC176D] Wizard in Maze

[ABC176D] Wizard in Maze

时间:2024-06-07 10:34:58浏览次数:13  
标签:int Wizard ABC176D bfs maxn Maze que stx dis

题目链接:https://atcoder.jp/contests/abc176/tasks/abc176_d

双端队列bfs模版题.

众所周知,用队列实现bfs,队列中存的是当前的状态

那么在当前这种题目中,下一步怎么走有两种决策,我们要把两种决策可能导致的状态更新全部都记录下来,因此我们可以用双端队列来实现bfs,把正常走的和传送的分别放入双端队列的前后端进行bfs即可,注意不同的决策对状态更新影响,然后分类讨论更新状态即可.

int n,m;
struct node{
    int x,y,step;
};
int stx,sty;
int edx,edy;
#define maxn 1010
char a[maxn][maxn];
bool check(int x,int y)
{
    if(x<=0||x>n||y<=0||y>m||a[x][y]=='#')
    {
        return true;
    }
    return false;
}
deque<node> que;
int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int dis[maxn][maxn];
void bfs()
{
    que.push_front({stx,sty,0});
    dis[stx][sty]=0;
    while(!que.empty())
    {
        auto k=que.front();
        que.pop_front();
        int x=k.x,y=k.y;
        int t=k.step;
        for(int i=0;i<4;i++)
        {
            int dx=x+dir[i][0];
            int dy=y+dir[i][1];
            if(check(dx,dy)||dis[dx][dy]<=dis[x][y]) continue;
            que.push_front({dx,dy,t});
            dis[dx][dy]=t;
        }
        for(int dx=x-2;dx<=x+2;dx++)
        {
            for(int dy=y-2;dy<=y+2;dy++)
            {
                if(check(dx,dy)||dis[dx][dy]<=dis[x][y]+1)
                {
                    continue;
                }
                que.push_back({dx,dy,t+1});
                dis[dx][dy]=t+1;
            }
        }
    }
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>m;
    cin>>stx>>sty;
    cin>>edx>>edy;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cin>>a[i][j];
        }
    }
    memset(dis,0x3f,sizeof(dis));
    bfs();
    if(dis[edx][edy]==0x3f3f3f3f)
    {
        cout<<-1<<'\n';
    }
    else 
    {
        cout<<dis[edx][edy]<<'\n';
    }

}

标签:int,Wizard,ABC176D,bfs,maxn,Maze,que,stx,dis
From: https://www.cnblogs.com/captainfly/p/18236700

相关文章

  • QuartusII调用 PLL_IP核方法(Mega Wizard)
    【基本信息】要求:调用PLL—IP核,50Mhz晶振输入,输出四路时钟不同信号:100Mhz,25Mhz,50Mhz(90°相位),50Mhz(20%占空比)。芯片型号:cycloneⅣEP4CE10F17C8平台工具:QuartusII15.0(64-bit)、ModelsimSE-6410.4【PLL_IP核简介】IP核:ASIC或FPGA中预先设计好具有某种功能的电路模块,参......
  • Q-learning 玩maze游戏
     importpygameimportnumpyasnpimportrandomimportsys#定义迷宫环境classMaze:def__init__(self):self.size=10self.maze=np.zeros((self.size,self.size))self.start=(0,0)self.goal=(9,9)self.m......
  • vivado 使用“Set Up Debug”Wizard 来插入调试核
    使用“SetUpDebug”Wizard来插入调试核标记要调试的信号线(net)后,下一步是将其分配到调试核。VivadoDesignSuite提供了易于使用的“设置调试(SetupDebug)”Wizard,以帮助逐步指导您完成自动创建调试核并将调试信号线分配至核的输入的整个过程......
  • 八臂迷宫实验(Eight-arm Maze Test,RMT)——KT-0854
    八臂迷宫实验是一种常用的行为学测试方法,用于评估动物的空间学习和记忆能力。该实验装置由八个相同的臂组成,这些臂从中心点平台放射出来,形成一个放射迷宫结构。动物在迷宫内接受训练,通过食物的驱使来探究各臂,进而记住食物在迷宫中的空间位置。这种方法不仅可以评估动物的工作记......
  • Wizard Form / Funnel 是什么表单
    WizardForm/FunnelForm的中文翻译分别是“向导表单”和“漏斗表单”。向导表单(WizardForm):也称为多步骤表单或多阶段表单,是一种分步骤指导用户填写表单的设计模式,如同向导一样带领用户一步一步完成表单填写。漏斗表单(FunnelForm):虽然通常“funnel”在互联网营销领域更......
  • 洛谷题单指南-搜索-P1825 [USACO11OPEN] Corn Maze S
    原题链接:https://www.luogu.com.cn/problem/P1825题意解读:计算最短路,依然是BFS。解题思路:相比传统的最短路迷宫,多了个传输装置,要解决几个关键问题:1、传输装置的存储定义一个数组,vector<node>trans[30],数据的每个元素都是一个vector<node>,里面存两个节点,即一对坐标2、传输......
  • doxygen/addon/doxywizard/wizard.cpp
    Step2::Step2(Wizard*wizard,constQHash<QString,Input*>&modelData) :m_wizard(wizard),m_modelData(modelData){ QRadioButton*r; QVBoxLayout*layout=newQVBoxLayout(this); //--------------------------------------------------- m_extractMo......
  • CF168B Wizards and Minimal Spell
    传送门:luogu和codeforces。题意给定若干行长度为\(n\)的字符串,要求进行以下操作:若字符串不以#开头,则删去所有空格;若第\(i\)行和第\(i+1\)行都不以#开头,则将这两行合并为同一行;若第\(i\)行为空行,除非第\(i-1\)和\(i+1\)行都以#开头,否则删去此行。......
  • 题解 AT_exawizards2019_e【Black or White】
    设\(P_b(k),P_w(k)\)表示已经吃了\(k\)块巧克力,把所有黑/白巧克力都吃光了的概率。枚举最后一块黑/白巧克力被吃的时间,容易得到:\[\begin{aligned}P_b(k)&=\sum_{i=1}^k\frac{\binom{i-1}{b-1}}{2^i}\\P_w(k)&=\sum_{i=1}^k\frac{\binom{i-1}{w-1}}{2^i}\\\end{aligned}\]......
  • 【LLM】微调我的第一个WizardLM LoRA
    根据特定用例调整LLM的行为之前,我写过关于与Langchain和Vicuna等当地LLM一起创建人工智能代理的文章。如果你不熟悉这个话题,并且有兴趣了解更多,我建议你阅读我之前的文章,开始学习。今天,我将这个想法向前推进几步。首先,我们将使用一个更强大的模型来与LangchainZeroShotReAct工具......