首页 > 小d和超级泡泡堂
头像 kilomatutinal
发表于 2026-02-18 10:41:37
猫猫真傻,真的。猫猫还以为是小d只能烧除自己以外的其他联通快呢喵。然后费劲巴拉的模拟了一个只排除@其他地方全烧的代码喵!结果发现是只烧自己的连通块喵!甚至就算我误解的题面,也只用全体减去小d所在的连通块就可以了喵!猫猫真傻,真的。。。其实这道题是一道简单的bfs连通块问题喵~(连通块的意思是没有被石 展开全文
头像 Night_crusing
发表于 2026-02-18 17:01:11
和昨天的题目一样这里我们也可以使用bfs,按照题目给出的逻辑,火焰和人的移动逻辑相同,换言之人之能至者,火之可至者也。所以只需用bfs搜索联通块就行,如果所在的地点没有踩过并且是杂草,那么火就能烧到这,换言之ans++我认为这种题目其实比较模板1. 使用向量数组来限制搜索范围(在我的知识范围之内模拟 展开全文
头像 YunBaichuan
发表于 2026-02-18 18:32:55
思路:网格图bfs。根据题意描述,其实就是网格图bfs板子题,没学过的同学可以学习一下。具体来说就是,以'@'为源点,跑一个网格图bfs,遇到非'#'的字符时判断一下是否为杂草'!',如果是的话就ans + 1;否则就是空地'.'不操作,之后把访问过的点置为'#',表示后面不再访问,接着继续跑网格图 展开全文
头像 空调不够冷HA
发表于 2026-02-18 22:53:32
#include <stdio.h> int n, m; int count=0; char s[1001][1001]; int visited[1001][1001]={0}; int direction[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; void 展开全文
头像 wuzhichen
发表于 2026-02-18 00:13:55
玩家无法移动到的地方炸弹产生的火肯定也烧不到,而玩家可以移动到的地方可以通过在起始点处放炸弹用火烧到,因此以初始点进行一次bfs判断四联通区域内有多少个草即可。 #include<bits/stdc++.h> using namespace std; #define LL long lo 展开全文
头像 carson_flute
发表于 2026-02-18 19:11:54
题目描述 小 D 穿越到《超级泡泡堂》世界,需要在地图上选择一个位置(即他当前所在位置)放置唯一一次可用的炸弹。炸弹爆炸后,火焰会向上下左右四个方向蔓延: 遇到空地(.)可继续传播; 遇到杂草(!)会将其烧毁(计为 1 个被清除的杂草)并继续传播; 遇到石头(#)或地图边界则停止该方向传播。 目 展开全文
头像 Turgen
发表于 2026-02-18 00:43:24
由于炸弹可以直接把在同一个连通块杂草全清除,那么剩余不能被清除的就是不在同一个连通块的杂草,也就是被石头或边界包围着的杂草,也就是求我们所在连通块,尽可能去扩展,得到的杂草数量。在实现上可以用BFS,然后由于每个点至多入队一次,至多出队一次,可以手写队列缩小一下常数。 #include <io 展开全文
头像 此在Dasein
发表于 2026-02-18 02:19:30
此问题本质上是一个图论中的连通性问题(Connectivity Problem),具体表现为二维网格图上的连通分量(Connected Component)计算。由于玩家的可达区域(移动)与火焰的覆盖区域(攻击)在拓扑结构上是完全重合的。问题转化为:计算包含起点(@)的“非石头”连通分量中,共有多少 展开全文
头像 BeauWill
发表于 2026-02-18 04:14:21
Modern Cpp #include <iostream> #include <vector> #include <string> #include <array> #include <queue> int main() { std 展开全文
头像 chenlan114
发表于 2026-02-18 10:37:01
#include<bits/stdc++.h> using namespace std; using ll=long long; const ll N=1005; ll n,m; vector<vector<char>>g(N,vector<char> 展开全文

等你来战

查看全部