HDU 2612 Find a way(bfs)

【HDU 2612 Find a Way(BFS)】(兼BFS入门笔记) 【HDU 2612 Find a Way(BFS)】 阅读详情

解析:

求2个点到KFC的距离之和,使其最小,可用2次BFS,分别求出2个点到各个KFC的最短距离,然后找出和最小的即可。

AC代码

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cstdlib>
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int N = 205;
const int dx[] = {-1, 0, 1, 0};
const int dy[] = { 0, 1, 0,-1};

char grid[N][N];
int dp[N][N][2];
bool vis[N][N][2];

struct Node {
    int x, y, step;
    Node() {}
    Node(int _x, int _y, int _step) {
        x = _x, y = _y, step = _step;
    }
}poi[2];

int n, m;
bool judge(int x, int y) {
    if(x < 0 || x >= n || y < 0 || y >= m || grid[x][y] == '#')
        return true;
    return false;
}

void bfs(int sx, int sy, int ch) {
    queue<Node> que;
    dp[sx][sy][ch] = 0;
    vis[sx][sy][ch] = true;
    que.push(Node(sx, sy, 0));
    int x, y, step;
    while(!que.empty()) {
        Node front = que.front();
        que.pop();
        for(int i = 0; i < 4; i++) {
            x = front.x + dx[i];
            y = front.y + dy[i];
            step = front.step + 1;
            if(judge(x, y) || vis[x][y][ch]) continue;
            vis[x][y][ch] = true;
            que.push(Node(x, y, step));
            if(grid[x][y] == '@') {
                dp[x][y][ch] = step;
            }
        }
    }
}

int main() {
    while(scanf("%d%d", &n, &m) != EOF) {
        memset(dp, 0, sizeof(dp));
        memset(vis, false, sizeof(vis));
        for(int i = 0; i < n; i++) {
            scanf("%s", grid[i]);
            for(int j = 0; j < m; j++) {
                if(grid[i][j] == 'Y')
                    poi[0].x = i, poi[0].y = j;
                else if(grid[i][j] == 'M')
                    poi[1].x = i, poi[1].y = j;
            }
        }
        for(int i = 0; i <= 1; i++) {
            bfs(poi[i].x, poi[i].y, i);
        }
        int ans = INF;
        for(int i = 0; i < n; i++) {
            for(int j = 0; j < m; j++) {
                if(grid[i][j] == '@' && vis[i][j][0] && vis[i][j][1])
                    ans = min(ans, dp[i][j][0] + dp[i][j][1]);
            }
        }
        printf("%d\n", ans*11);
    }
    return 0;
}
自动换挡频率计的设计精髓:如何用数字电路优雅地解决量程切换难题 本文深入解析了自动换挡频率计的设计精髓,重点探讨如何利用数字电路优雅解决量程切换难题。通过74系列通用数字集成电路构建智能化的自动量程切换系统,详细介绍了状态检测、决策逻辑和档位执行等核心模块的设计方法,并对比了不同实现方案的优劣,为电子测量领域的工程师提供了实用的硬件设计参考。 阅读详情

相关推荐

使用MKL+Eigen求解稀疏矩阵方程组

问题:求解Ax=b的解,其中,A为大型稀疏矩阵,长和宽分别为1500^2。 一般思路: (1)A为对称正定矩阵,对A使用cholesky分解。 (2)A为对称不定矩阵,使用LDL‘分解,即: PAP'=LDL' 其中,L为单位下三角矩阵,D由阶数为1或者2的对角块构成,P是置换矩阵。 (3)不对称矩阵:LU分解。 (4)长方形矩阵(长...

薛晓伟 3445

HDU - 2612 Find a way 【BFS】

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2612 题意 有两个人 要去一个城市中的KFC 一个城市中有多个KFC 求两个人到哪一个KFC的总时间最少 求出这个最少的总时间 思路 用BFS打一遍表 求出两个人每人到 每个 KFC 的时间 然后 遍历一下 更新答案 AC代码 #in...

dianxi0949的博客 146

YOLO11实战:手把手教你优化钢材表面缺陷识别模型(基于NEU-DET数据集)

本文详细介绍了如何使用YOLO11优化钢材表面缺陷识别模型,基于NEU-DET数据集进行实战训练。从数据增强、模型架构优化到训练过程控制,全面解析提升钢材缺陷检测性能的关键技术,特别针对裂纹、划痕等典型缺陷提出针对性解决方案。

weixin_29081163的博客 379

hdu 2612 Find a way(BFS)

题目链接:hdu2612 思路:题意是求两个人到某一个KFC花费时间和最小,其实就是求最短距离和,用两个BFS,分别以两个人为起点,分别记录下两人到每个KFC的距离,然后求出最小的和 #include #include #include #include #define N 205 using namespace std; char map[N][N]; int v[N][N],ans1[N]

no pains,no gains 1075

WIFI CSI动作识别数据集全解析:从数据采集到深度学习应用

本文全面解析了利用商用Wi-Fi设备的信道状态信息进行动作识别的完整流程。文章以经典WiSA数据集为例,深入剖析了CSI数据的采集原理、结构特点,并详细阐述了从原始数据预处理、特征工程到深度学习模型(如CNN-LSTM融合架构)构建与优化的关键技术,旨在为研究者提供从数据到应用的全链路实战指南。

r2s3t4的博客 281

【硬件自锁开关】用两个D触发器完成实用的自锁开关电路

性价比是做电子设计的人要考虑的事,在学会了用单片机解决大多数问题的时候,是否你也想过用简单的手段解决一个多数场合要解决的问题呢?按一下,输出状态由关闭变成开启,再按一下开启变成关闭。机械弹簧式的开关可以实现自锁的功能:钩子和弹簧将当前状态“储存”起来,这个能量为下一次触发的提供状态“翻转”的动力;在电子设计中,经常通过单片机的程序指令实现自锁:通过寄存器将当前电平状态暂存起来,下一次触发的时候寄存器内容“取反”,再将其输出到端口。可否用电路实现以上过程呢?完全可以,方案很简单,通过两个D触发器即可实现。

qq_33175704的博客 4258

HDU 2612 Find a way(BFS)

HDU 或 HDOJ 2612 Find a way (两次 BFS)

Keep trying, keep going 475

nacos3.1.0适配国产数据库

Nacos 3.1.0适配国产数据库指南 本文介绍了Nacos 3.1.0版本适配达梦数据库和人大金仓数据库的具体步骤。主要内容包括:添加达梦和人大金仓的JDBC驱动依赖,修改nacos-persistence模块的配置文件及相关Java类,以及打包和运行注意事项。文章特别指出3.1.0版本需要JDK17环境,并提供了解决常见问题的建议,如添加VM options配置和不同启动方式等。通过本文的配置指导,可以实现Nacos服务在国产数据库环境下的正常运行。

梦昼初的博客 1466

搜索 Find a way HDU - 2612 BFS

搜索 Find a way HDU - 2612 BFS 题意: 两个人Y和M要去同一家肯德基吃饭,然后问你怎么走所花费的总时间最少。 ‘#’代表的是墙不能走。 思路: 就是广搜开两个数组,虽然在同一个队列里面,但是标记一下之后更新与他相关的相关数组就可以了。我wa了几次,最后一定要注意 有可能以有一家kfc是被包围在墙壁里面的不可能到达,所以要对可以到达的kfc做一下标记。 其余就是bfs的板...

laaahu的博客 496

DDD系列 - 第12讲 如何在DDD中实现Query服务(轻量化CQRS)

轻量化CQRS、整合Repository和DAO的优势。

罗小爬的技术宝书 266

xtop:multi_driven_net与incomplete_timing_cell fail reason 分析

man multi_driven_net”可以得知,这个问题是multi driven结构引起的,使用命令“get_failed_pins -reason multi_driven_net”,获取violation pin。“man incomplete_timing_cell”可以得知,这个fail reason的原因是缺少timing library cell,检查并补全后这个错误就显示了。这里选择的解决方法是修改lib文件,把inout改成input,重新lib2idb。通过这种方法解决了问题。

m0_61544122的博客 567

【 HDU 2612】 Find a way 双BFS

HDU 2612 Find a way Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially...

天才小熊猫的博客 363

从零开始理解Linux中断架构(1)-前言

前段时间在转行手撸WIFI路由器,搞wifi路由器需要理解网络驱动程序,以太网卡驱动程序,无线WIFI驱动程序,而网卡驱动的关键路径就在中断程序中,需要了解NIC设备驱动程序如何收发数据,为了彻底的知道数据包是如何二层传递上来的,又需要了解一点Linux中断系统。第一次看到这张表是无感的,大概能够看懂的就是那个中断次数,因为不停的cat,这个数值会一直不停的增加。第一列是逻辑中断号,第二三列是中断次数,第四列是中断控制器的名字,第五列是硬件中断号,第六列 中断类型,第七列是 中断源关联设备。

maxleng的专栏 881

HDU - 2612 Find a way 两次BFS

HDU - 2612 Find a way 题意: 输出 Y 和 M 到 KFC 最短时间总和。 思路: 两次 BFS 时间相加,最小的那个即为答案。除了 '#' 不能走,其余的都可以走且每走一步就需要 11 minutes。 #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; #includ...

没有梦想何以远行 199

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

HDU2612 Find a way BFS

Find a way Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 28250 Accepted Submission(s): 9128 Problem Description Pass a year learning in Ha...

DouglasConnor的博客 299

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

HDU2612 Find a way 双向BFS

网址:https://vjudge.net/problem/HDU-2612 题意: 地图上分布着一些KCF(?),有两个人在其出发点,地图上‘#’表示不能走的格子, ‘.’表示可以走的格子,‘@’表示可行的目的地。两个人从出发点出发,移动一个需要代价是$1$,并且不能经过对方的出发点,求代价和的最小值。 题解: 建好图之后对这两个人跑一次bfs然后枚举最小值即可。 AC代码:...

FairyTail0423的专栏 190

HDU2612 Find a way —— BFS

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2612 Find a way Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 17047    Accepted Sub

A man can be destroyed, but not defeated. 372

ACM之路 hdu2612 Find a way(简单BFS,带注释)

hdu2612 Find a way Y和M要去KFC见面,地图上有很多个KFC,求两个人去最近的KFC所走距离的和,KFC也是可以走的 题解:数据不大,BFS直接搜出两个人走到每个点的距离保存下来,最后计算去每个KFC所走距离和最小值即可,具体看代码 #include <iostream> #include <cstring> #include <queue> using namespace std; const int maxn=500; char pic[ma

weixin_43823444的博客 345

hdu2612 Find a way(BFS)

题意大致是两个人Y 和 M 要去@(KFC)相聚,问他们相聚的最短时间。 思路:BFS。分成两个图,一个用bfs跑Y去所有可到达的@的最短路径,一个用bfs跑M去所有可到达的@的最短路径,分别记录下来,然后求后求和取最小值。有一点我没从题目中读出来,就是Y和M各自所占的地方是否可以互相到达,试了下不可以,也就是说对于Y来说,M相当于‘#’。 AC Code: #include<ios...

一身清贫怎敢入繁华 381

HDU 2612:Find a way(BFS)

HDU 2612:Find a way(BFS) 题目链接 题意: 给定一个地图,其中包括一些障碍物(表示不能走),M,Y同学的起始位置,各个KFC的位置 M,Y同学分别从不同地方相汇合,每走一步需要11个单位时间,问需要最少时间,他们能在同一个KFC相遇 题解: 起初想的是:对M同学和Y同学分别进行BFS,两边凑,但是结果失败了,感觉应该可以弄出来的,但是卡住了 其实直接可以用两次BFS,额外开...

serendipity的博客 285

ACM-bfs之Find a way——hdu2612

bfs Find a way hdu2612

继续激情,继续奋斗。 1602

hdu 2612 Find a way(两次BFS)

hdu  2612  Find a way                  题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2612 双搜 题目大意:两人住在一个城市里,他们打算去KFC聚会,但是城里有很多KFC。给出地图,上面标有两人起点,KFC点,可走点和不可走点,计算两人碰面所需最短时间。 题目分析:两次BFS(把地图单独存起来,因为走B

slicer的技术交流栈 756

BFS-Find a way HDU - 2612

BFS-Find a way HDU - 2612 题目: Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki....

njuptACMcxk的博客 343

hdu 2612 Find a way bfs

Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki. Yifenfei’s home is at the

liluoyu_1016的博客 278

【HDU 2612】Find a way(bfs)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2612 题意: yifenfei要回宁波见他的好朋友Merceki,但是yifenfei住在乡村,而Merceki住在市中心,因此他们约定在KFC处碰面,但是在宁波有很多KFC,他们想选择一个使他们到达KFC总时间最少的一个KFC,现在给你一个地图,求出最小总时间,俩人每走一步都要花费11分钟,地图...

innocence的博客 221

【题解】HDU - 2612 Find a way BFS+打表

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2612 题目大意:Yifenfei和Merceki两个人约在了KFC见面,求他们各自分别从家里到哪个KFC距离之和最小 我的题解: 我一开始想都没想傻傻对每个KFC进行bfs,然后不负众望地t了好多次,真的是太蠢了 后来看了一下别人的做法,现在拿个小本本记下来,以后还遇到像这种需要记录多个位置的值的要拿...

替这位空想家惊讶 205

Hdu2612 Find a way【简单bfs】

http://acm.hdu.edu.cn/showproblem.php?pid=2612 走迷宫题目变型,简单bfs #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <vector&gt...

bantengbang8949的博客 106
上一篇: POJ 1426 Find The Multiple(bfs+打表)
下一篇: POJ 2406 Power Strings(kmp循环节)
HelloWorld10086
博客等级 码龄12年 88粉丝 614原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值