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

UVa 469 Wetlands of Florida

题目描述

题目要求计算包含指定水域单元格的湖泊面积。网格由W(水)和L(陆地)组成,相邻定义包括八个方向(上、下、左、右及四个对角线)。对于每个查询(给出水单元格的行和列坐标),输出该单元格所在连通水域的面积(即连通分量中W的数量)。

输入格式

第一行一个整数NNN,表示测试用例的数量,后面跟一个空行。每个测试用例的第一部分为网格描述:若干行,每行一个由WL组成的字符串,表示网格的一行。网格行数nnn和列数mmm满足0<n,m≤990 < n, m \le 990<n,m99。网格描述后跟若干行,每行两个整数iiijjj,表示查询的水单元格坐标(行和列,从111开始)。输入以文件结束符(EOF\texttt{EOF}EOF)终止。两个连续测试用例之间由一个空行分隔。

输出格式

对于每个查询,输出一行一个整数,表示该湖泊的面积。两个连续测试用例的输出之间由一个空行分隔。

样例

输入

1 LLLLLLLLLL LLLWLLWLL LWWLLLLLL LWWLLWWLL LLLWWLLLL LLLLLLLLL LLLWWLLWL LLLWLLLLL LLLLLLLLL 3 2 7 5

输出

12 4

题目分析

本题的核心是计算二维网格中八连通水域的连通分量大小。

连通性

八个方向包括:上、下、左、右、左上、右上、左下、右下。因此,洪水填充(Flood Fill\texttt{Flood Fill}Flood Fill)时需要遍历所有888个邻居。

算法

  • 对于每个查询,从指定位置开始执行深度优先搜索(DFS\texttt{DFS}DFS)或广度优先搜索(BFS\texttt{BFS}BFS),统计所有可达的W单元格数量。
  • 为避免重复计数,可以将已访问的W临时标记为其他字符(如X),统计完成后恢复(或使用单独的访问标记数组)。

注意事项

  • 网格大小最大为99×9999 \times 9999×99,每次查询重新搜索完全可接受。
  • 坐标从111开始,需要转换为000索引或直接在111索引数组上操作。

复杂度分析

每次查询最多访问所有单元格,时间复杂度O(n×m)O(n \times m)O(n×m)n,m≤99n, m \le 99n,m99,查询次数未知但总可接受。

代码实现

// Wetlands of Florida// UVa ID: 469// Verdict: Accepted// Submission Date: 2016-07-16// UVa Run Time: 0.030s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;charmatrix[110][110];intcounter,row=0,column=0;voidrestore(){for(inti=1;i<=row;i++)for(intj=1;j<=column;j++)if(matrix[i][j]=='X')matrix[i][j]='W';}voidflood_fill(intr,intc){if(r>=1&&r<=row&&c>=1&&c<=column){if(matrix[r][c]=='W'){counter++;matrix[r][c]='X';for(inti=-1;i<=1;i++)for(intj=-1;j<=1;j++){if(i==0&&j==0)continue;flood_fill(r+i,c+j);}}}}intmain(intargc,char*argv[]){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);string line;getline(cin,line);intcases=stoi(line);getline(cin,line);for(inti=1;i<=cases;i++){if(i>1)cout<<endl;row=0;while(getline(cin,line),line.length()>0){if(isalpha(line.front())){for(intj=0;j<line.length();j++)matrix[row+1][j+1]=line[j];row++;column=line.length();}else{istringstreamiss(line);intcell_row,cell_column;iss>>cell_row>>cell_column;counter=0;flood_fill(cell_row,cell_column);restore();cout<<counter<<'\n';}}}return0;}
http://www.rkmt.cn/news/1509623.html

相关文章:

  • 5G NR/WiFi 6里那个不起眼的‘相位跟踪’信号PT-RS,到底是怎么帮你稳住网速的?
  • Java写的图形化文件加密解密小工具,支持AES/DES/3DES/Blowfish/RC4五种算法
  • 2026年呼和浩特口碑旅行社TOP1:服务与口碑并重,2万亩私家牧场,随心畅玩 - 资讯速览
  • N皇后遗传算法Python实战:从编码到100规模求解
  • 从公式到车锁:BLE RSSI动态测距在蓝牙钥匙中的工程实践
  • 从零读懂 RAG:一篇讲透检索增强生成的全流程
  • 2026年最新阳泉市口碑首选;黄金回收铂金回收白银回收彩金回收实力权威靠谱门店TOP5推荐及咨询方式 - 前途无量YY
  • 记录Linux进程(fork函数)
  • Branch and Bound工程实现指南:从理论到可运行求解器
  • 2026年最新宜宾市口碑首选;黄金回收铂金回收白银回收彩金回收实力权威靠谱门店TOP5推荐及咨询方式 - 前途无量YY
  • 拆解UT斯达康高安版S905MB盒子:除了刷机,我们还能从固件包里学到什么?
  • 告别纸上谈兵:用CEVA-BX2 DSP软核,手把手教你搭建5G基带原型验证平台
  • ADS Serdes仿真避坑指南:手把手教你调Tx_Diff EQ,让眼图瞬间清晰
  • JetBrains IDE试用期重置:2026年最实用的终极解决方案
  • 截图工具推荐 | FastStone | WinSnap | xsnip | PicPick | Snipaste
  • ChatGPT 精准搜索实战:用结构化提问筛选高质量内容
  • 从CPU散热到电容寿命:一个MTBF公式,如何影响你的电脑DIY与超频稳定性?
  • 别再死记硬背了!用Wireshark抓包实战,5分钟搞懂IPSec的AH和ESP到底有啥区别
  • 别再死记硬背了!用一张图帮你理清PLC、SCADA、MES、ERP在工厂里的真实关系
  • 别再傻傻分不清了!U-Boot里.config和defconfig到底啥关系?手把手带你对比分析
  • 常州实体商家必看:AI 搜索时代 GEO 优化服务商精选指南 - 博客万
  • 企业级AI化转型服务概念深度解析+选型指南:将AI注入iPaaS系统集成全生命周期
  • 2026北京朝阳区百达翡丽回收:五家谁更专业?真相来了 - 逸程
  • Anthropic模型能力演进与安全发布机制解析
  • 3分钟颠覆传统:如何用智能化手机号码定位系统解决企业精准营销难题
  • 百度网盘提取码智能获取:3秒解密加密资源的终极指南
  • AI技术简报如何成为工程师的决策仪表盘
  • 220V转5V1A模块电源WT5105
  • 深度解析Harepacker-resurrected:一站式MapleStory游戏资源编辑解决方案
  • Android 13 GMS认证避坑:手把手教你搞定RKP配置,解决GTS测试fail