当前位置: 首页 > news >正文

题解:洛谷 P2960 [USACO09OCT] Invasion of the Milkweed G

【题目来源】

洛谷:[P2960 USACO09OCT] Invasion of the Milkweed G - 洛谷

【题目描述】

农夫约翰一直尽力保持牧场里长满丰盛、美味且健康的草供奶牛食用。然而,他输掉了这场战斗,因为邪恶的乳草在他的农场西北部站稳了脚跟。

牧场通常被划分为一个直角网格,高度为 \(Y\)\(1 \le Y \le 100\)),宽度为 \(X\)\(1 \le X \le 100\)),其中 \((1,1)\) 位于左下角(即,排列为正常的 \(X,Y\) 坐标网格)。乳草最初开始在方格 \((M_x,M_y)\) 生长。每周,乳草会传播到它已经占据的任何方格周围的所有非岩石方格,最多可以传播到八个方格(包括直角方格和对角线方格)。在这些方格中仅仅一周后,它就准备好继续传播到更多方格。

贝茜想在牧场被乳草占领之前尽可能多地享受青草。她想知道牧场能持续多久。如果乳草在时间零时位于方格 \((M_x,M_y)\),那么它在何时完成对牧场的入侵(对于给定的输入数据,这种情况总会发生)?

牧场由一个图示描述,'.' 代表草,'*' 代表巨石,如下例所示,\(X=4\)\(Y=3\)

....
..*.
.**.

如果乳草从左下角开始(行=1,列=1),那么地图将按如下方式演变:

    ....  ....  MMM.  MMMM  MMMM..*.  MM*.  MM*.  MM*M  MM*MM**.  M**.  M**.  M**.  M**M
week  0    1    2    3    4

乳草在 4 周后占领了整个牧场。

【输入】

* 第 1 行:四个以空格分隔的整数:\(X\)\(Y\)\(M_x\)\(M_y\)

* 第 2 行到第 \(Y+1\) 行:第 \(y + 1\) 行描述了牧场的第 \((Y + 1 - y)\) 行,其中包含 \(X\) 个字符('.' 代表草,'*' 代表巨石)

【输出】

* 第 1 行:一个整数,表示乳草占领牧场最后一个非巨石方格的周数。

【输入样例】

4 3 1 1 
.... 
..*. 
.**. 

【输出样例】

4 

【算法标签】

《洛谷 P2960 Invasion of the Milkweed》 #搜索# #USACO# #2009#

【代码详解】

#include <bits/stdc++.h>
using namespace std;const int N = 105;  // 网格最大尺寸
int n, m, x, y, ans;  // n: 行数,m: 列数,x,y: 起始坐标,ans: 最大步数
char a[N][N];  // 网格地图
bool vis[N][N];  // 访问标记数组
int dx[8] = {-1,-1,-1,0,0,1,1,1};  // 8个方向的行偏移量
int dy[8] = {-1,0,1,-1,1,-1,0,1};  // 8个方向的列偏移量struct Node
{int x, y, step;  // 节点坐标和步数
};void bfs()
{queue<Node> q;q.push({x, y, 0});  // 起点入队vis[x][y] = 1;  // 标记起点已访问while (!q.empty()){int xx = q.front().x, yy = q.front().y, step = q.front().step;q.pop();// 遍历8个方向for (int i = 0; i < 8; i++){int nx = xx + dx[i], ny = yy + dy[i];  // 计算新坐标// 检查边界if (nx < 1 || nx > n || ny < 1 || ny > m) continue;// 检查是否已访问if (vis[nx][ny]) continue;// 检查是否为障碍if (a[nx][ny] == '*') continue;// 标记访问并加入队列vis[nx][ny] = 1;q.push({nx, ny, step + 1});ans = max(ans, step + 1);  // 更新最大步数}}
}int main()
{// 读入网格尺寸和起始坐标// 注意输入顺序:先列数m,再行数n,再列坐标y,再行坐标xcin >> m >> n >> y >> x;// 调整行坐标(题目坐标系与数组索引的转换)x = n - x + 1;  // 将输入的行坐标转换为数组索引// 读入网格地图for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){cin >> a[i][j];}}// 标记起点为已访问状态a[x][y] = '#';// 开始广度优先搜索bfs();// 输出从起点出发能到达的最远步数cout << ans << endl;return 0;
}

【运行结果】

4 3 1 1
....
..*.
.**.
4
http://www.jsqmd.com/news/394440/

相关文章:

  • 完整教程:RAG不是万能的:没有可观测性,你的系统只是在“碰运气”
  • 2026年测定仪品牌排行,哪些生产商口碑上佳?NDWGY-503S外护套电缆故障定位仪,测定仪厂家联系电话 - 品牌推荐师
  • 2026矿用链条厂家实力推荐:山东宏茂矿山机械,国标/矿用刮板机/起重/圆环链条全系供应 - 品牌推荐官
  • 2026年环保草毯厂家推荐:济宁茂源绿化草制品,生态/护坡/秸秆草毯全系产品解析 - 品牌推荐官
  • day02——背!!!
  • 2026年武汉江葬服务推荐:武汉孝德礼仪服务有限公司,专业提供江葬公祭、游船江葬等全流程服务 - 品牌推荐官
  • 2026年保温材料厂家推荐:潍坊玉诚保温材料有限公司,聚氨酯/别墅/厂房/冷库保温全系解决方案 - 品牌推荐官
  • 2026年疲劳试验机厂家实力推荐:济南世昌试验设备有限公司,全系列疲劳试验机专业供应 - 品牌推荐官
  • 题解:洛谷 P1074 [NOIP 2009 提高组] 靶形数独
  • 2026年智能水肥一体化设备推荐:山东润浩水利科技,全系水肥一体机/移动水肥机解决方案 - 品牌推荐官
  • 2026年聚氨酯冷库保温材料厂家推荐:潍坊远航,喷涂/施工/工程一站式解决方案 - 品牌推荐官
  • 2026年滤油机厂家推荐:重庆市陆顺科技发展有限公司,透平/淬火/润滑/绝缘油滤油机全系供应 - 品牌推荐官
  • 2026年丝杆模组型材厂家推荐:山东富俊机械科技,双丝杆/直线/导轨滑台全系解决方案 - 品牌推荐官
  • 2026年烧结滤芯专业厂家推荐:深圳市恒歌科技有限公司,多孔过滤材料与金属烧结滤芯全系解决方案 - 品牌推荐官
  • 2026年针织布松布机厂家推荐:艺大机械科技,变频/全自动/电子/调速等松布机全系供应 - 品牌推荐官
  • 2025年度优质PLC控制柜定制厂家排行揭晓,水处理变频控制柜/智能水泵控制柜,PLC控制柜批发厂家排行榜 - 品牌推荐师
  • 2026年水质测试仪厂家推荐:杭州凯米斯物联传感科技,全系水质测试仪助力精准监测 - 品牌推荐官
  • 2026年玻璃钢缠绕机厂家推荐:连云港拓天航空装备,全自动/管道/化粪池缠绕机专业供应 - 品牌推荐官
  • 2026年FDA认证权威推荐:深圳市中检联标技术服务有限公司,提供药品/膳食补充剂/化妆品/食品FDA认证服务 - 品牌推荐官
  • 题解:洛谷 P5507 机关
  • 2026年香水瓶生产厂家推荐:徐州群益玻璃科技,定做/批发/定制/精油瓶/香薰瓶全品类供应 - 品牌推荐官
  • 2026年铸铁平台专业厂家推荐:泊头市天健工量具,灰铸铁/T型槽/高精度/定制铸铁平台全系供应 - 品牌推荐官
  • 2026年显微成像设备推荐:上海数联生物科技多模态/荧光寿命/动物活体成像全覆盖 - 品牌推荐官
  • 2026年拆包机设备推荐:潍坊浩宝机械吨袋拆包机、全自动拆包投料机等全系产品解析 - 品牌推荐官
  • 2026年口碑好的青岛A3打印机租赁公司实力推荐榜 - 品牌鉴赏师
  • 2026年气象站设备厂家推荐:河北品高电子科技,农业/超声波/校园/便携/光伏气象站全覆盖 - 品牌推荐官
  • 2026年双膜气柜厂家实力推荐:青岛海越膜结构工程有限公司,全系产品覆盖多场景需求 - 品牌推荐官
  • 2026年氨水供应商推荐:山东青甲化工,化工/脱硫/电子/食品级氨水全系供应 - 品牌推荐官
  • 2026年杀虫灯专业厂家推荐:扬州市宝迪照明科技,太阳能/风吸式/电击式全系产品供应 - 品牌推荐官
  • 题解:洛谷 P6824 「EZEC-4」可乐