随笔分类 -  广搜

摘要:解题思路分析: 问题理解: 需要在有向图中找到从1到N的任意行走(允许重复访问节点和边) 目标是使路径上所有边权重的异或值最小 关键观察: 异或操作的性质:a ^ b ^ b = a(走两次同一条边会抵消) 因此可以允许路径中出现"来回走"的情况来调整异或值 算法选择: 使用BFS遍历所有可能的异或 阅读全文
posted @ 2025-06-18 19:50 CRt0729 阅读(77) 评论(0) 推荐(0)
摘要:解题思路 这道题要求将数字1围成的闭合圈内的所有0改为2。关键点在于如何区分闭合圈内外的0: 逆向思维:不直接找闭合圈内的0,而是找出所有与边界相连的0(这些0肯定在闭合圈外) 多源BFS:从所有边界上的0开始进行BFS,标记所有能到达的0 填色规则: 未被标记的0就是闭合圈内的0,需要改为2 标记 阅读全文
posted @ 2025-06-06 15:16 CRt0729 阅读(44) 评论(0) 推荐(0)
摘要:解题思路 这道题是一个典型的带时间限制的BFS问题,需要考虑流星坠落时间对路径选择的影响。关键点在于: 地图预处理:首先计算每个格子最早被流星摧毁的时间 安全区域判断:安全区域是指永远不会被流星摧毁的格子(即g[x][y] = ∞) BFS扩展条件:贝茜只能在到达某格子的时间早于该格子被摧毁的时间才 阅读全文
posted @ 2025-06-06 15:02 CRt0729 阅读(37) 评论(0) 推荐(0)
摘要:解题思路 这道题是一个典型的带传送门的迷宫最短路径问题,需要使用广度优先搜索(BFS)来解决。关键点在于正确处理传送门的逻辑: 地图表示:使用二维字符数组存储迷宫,包含起点'@'、终点'='、障碍'#'、草地'.'和传送门'A'-'Z' 传送门特性: 传送门是双向的,且强制传送(必须使用) 传送不消 阅读全文
posted @ 2025-06-06 14:37 CRt0729 阅读(87) 评论(0) 推荐(0)
摘要:解题思路 这道题是一个典型的二维矩阵中的最短路径问题,可以使用广度优先搜索(BFS)来解决。BFS非常适合解决这种无权图的最短路径问题,因为它会逐层扩展搜索,第一次到达目标点时经历的步数就是最短路径。 关键点: 矩阵表示:用二维字符数组g存储地图,包含起点'm'、终点'd'、障碍'#'和空地'.' 阅读全文
posted @ 2025-06-06 12:39 CRt0729 阅读(36) 评论(0) 推荐(0)
摘要:题目分析 这道题是一道典型的 BFS(广度优先搜索) 题目,要求计算从楼层 A 到楼层 B 的最少按键次数。电梯的移动规则是: 每次可以 向上或向下 移动 K_i 层(K_i 是当前楼层 i 的数字)。 如果移动后的楼层超出 1~N 的范围,则该方向不可行。 由于每次移动的代价相同(每次按键算一步) 阅读全文
posted @ 2025-06-04 20:13 CRt0729 阅读(150) 评论(0) 推荐(0)
摘要:题目分析 这是一道经典的 一维BFS(广度优先搜索) 题目,要求计算农夫(FJ)从起点 x 到终点 y 的最少步数,每次移动可以选择: 前进一步(x + 1) 后退一步(x - 1) 直接跳跃到 2 * x 的位置 由于每次移动的步数相同(每一步的代价都是 1),BFS 能够保证首次到达终点时的步数 阅读全文
posted @ 2025-06-04 19:51 CRt0729 阅读(32) 评论(0) 推荐(0)
摘要:解决思路 广度优先搜索 (BFS):使用 BFS 从起点 x 开始搜索,找到到达终点 y 的最短路径。 队列:使用队列存储当前节点和步数。 访问标记:使用数组 vis 标记节点是否被访问过,防止重复访问。 #include<bits/stdc++.h> #define ll long long us 阅读全文
posted @ 2024-09-30 17:53 CRt0729 阅读(76) 评论(0) 推荐(0)
摘要:描述 寒假在家里无聊极了,小w看到地上的瓷砖,想出了一个游戏。这个游戏是这样子的,一共有n个格子,刚开始在起点的时候可以跳到第1个到第k个格子中的一个上面,之后在每个格子上只能向前跳相对应的长度。请问至少需要多少步可以恰好跳到最后一个格子呢? 输入 第一行输入两个整数n和k(1<=n<=100000 阅读全文
posted @ 2023-07-16 12:03 CRt0729 阅读(52) 评论(0) 推荐(1)
摘要:描述 童年的我们,将和朋友分享美好的事物作为自己的快乐。这天,C小朋友得到了Plenty of candies,将要把这些糖果分给要好的朋友们。已知糖果从一个人传给另一个人需要1 秒的时间,同一个小朋友不会重复接受糖果。由于糖果足够多,如果某时刻某小朋友接受了糖果,他会将糖果分成若干份,分给那些在他 阅读全文
posted @ 2022-12-29 18:05 CRt0729 阅读(95) 评论(0) 推荐(0)
摘要:描述 给定一个n*m的地图,每个方格可以取: (1)“*”:表示一个景点; (2)“#”: 表示墙壁,不可经过; (3)“.”: 表示通道,可以经过; 现在你从左上角(0, 0)出发,需要走遍每个景点,且回到起点,问最少需要几步。 输入 第一行为n和m,表示地图的行数和列数(1<=n, m<=10) 阅读全文
posted @ 2022-12-09 09:50 CRt0729 阅读(56) 评论(0) 推荐(0)
摘要:部分和问题 #include<bits/stdc++.h> #include<iostream> using namespace std; int k,n,m,num,vis[1042],dt[1000],f; void dfs(){ if(f==1)return; if(num==k){ f=1; 阅读全文
posted @ 2022-11-12 11:50 CRt0729 阅读(64) 评论(0) 推荐(0)
摘要:广度优先搜索 第一步 7588: 农夫抓牛 农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式: 1、从X移动到X-1或X+1,每次移动花费一分钟 2、从X移动到2*X,每次移动花费一分钟 阅读全文
posted @ 2022-10-29 10:11 CRt0729 阅读(120) 评论(0) 推荐(0)
摘要:描述 一个n * m的方格图,一些格子被涂成了黑色,在方格图中被标为1,白色格子标为0。问有多少个四连通的黑色格子连通块。四连通的黑色格子连通块指的是一片由黑色格子组成的区域,其中的每个黑色格子能通过四连通的走法(上下左右),只走黑色格子,到达该联通块中的其它黑色格子。 输入 第一行两个整数n,m( 阅读全文
posted @ 2022-10-12 14:57 CRt0729 阅读(128) 评论(0) 推荐(0)
摘要:描述 英雄联盟里的流浪法师瑞兹有一个技能叫做法术涌动,法术涌动会发射一团法球对命中的目标添加涌动效果并扩散至附近的敌人,该效果会持续4秒;如果试图施加涌动效果至一名已有涌动效果的敌人,那么该效果会进一步扩散(我们假设涌动是瞬间完成不计算时间),并且之前的涌动效果会刷新继续存在4秒。 现在给你一个n* 阅读全文
posted @ 2022-06-22 18:02 CRt0729 阅读(227) 评论(0) 推荐(0)
摘要:描述 迷宫可以被描绘成一个带有以下字符的矩形: 'E':迷宫的入口; ‘X’:迷宫的出口; '#':迷宫的边界或墙壁; '.':穿过迷宫的路径。 例如,一个小迷宫可能如下所示: #前任### 你的工作是找到从“E”到“X”的最短路径(在“E”和“X”之间遇到的点数最少)。要从“E”到“X”,您只能乘 阅读全文
posted @ 2022-06-20 00:13 CRt0729 阅读(76) 评论(0) 推荐(0)