当前位置: 首页 > 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.jsqmd.com/news/997853/

相关文章:

  • 如何快速解密网易云音乐NCM格式:3步实现音乐自由播放
  • 2026年6月南京办公室工装装修5家团队客观测评选型指南 - 小艾信息发布
  • 5G NR/WiFi 6里那个不起眼的‘相位跟踪’信号PT-RS,到底是怎么帮你稳住网速的?
  • RTSP流媒体服务器扛不住了?从硬件到软件的5个调优技巧(附Nginx-rtmp-module配置)
  • 青岛闲置黄金怎么卖?2026实地探店|正规回收渠道全解析 - 奢侈品回收测评
  • 12. UDP协议概述
  • 中兴光猫工厂模式一键解锁:zteOnu工具深度解析与实战指南
  • Java写的图形化文件加密解密小工具,支持AES/DES/3DES/Blowfish/RC4五种算法
  • 2026 吉安厨卫屋面地下室漏水瓷砖空鼓测评:吉修匠 99.8 分五星榜首 - 吉修匠
  • 2026年呼和浩特口碑旅行社TOP1:服务与口碑并重,2万亩私家牧场,随心畅玩 - 资讯速览
  • 菏泽市中级经济师工商管理/人力资源管理:适配人群、岗位匹配与备考全攻略 - 众智商学院课程中心
  • 【Seatable API实战】Python操作避坑指南:从零到一玩转表格数据
  • 从公式到车锁:BLE RSSI动态测距在蓝牙钥匙中的工程实践
  • N皇后遗传算法Python实战:从编码到100规模求解
  • Android NDK原生层黑白滤镜实时预览方案(Camera2+OpenGL FBO)
  • 遗传算法实操指南:从收敛异常到工程落地的七步法
  • 2026深圳黄金回收正规机构测评:主流品牌深度解析,谁值得选? - 奢侈品回收测评
  • 从零读懂 RAG:一篇讲透检索增强生成的全流程
  • MLX90640红外热成像传感器C驱动包:支持硬件I2C与软件模拟I2C,已实测适配STM32/ESP32/Arduino
  • 2026济南黄金回收天花板!30年合规老店,全区域门店地址+报价攻略 - 奢侈品回收评测
  • 2026东营卫生间漏水不用砸砖?微创补漏靠谱方案 - 苏易修缮
  • 想做GEO但不知道找谁?
  • 从RGB颜色处理到网络字节序:聊聊移位操作在真实项目里的那些坑
  • 人工涂覆导热硅脂总达不到要求,远甬早已解决这一痛点 - 速递信息
  • 跨越屏幕界限:Sunshine游戏串流服务器的全场景应用指南
  • GD32F103C8T6上开箱即用的FreeModbus主站工程(RT-Thread Nano 3.1.5 + RTU串口)
  • 2026年最新聊城市口碑首选;黄金回收铂金回收白银回收彩金回收实力权威靠谱门店TOP5推荐及咨询方式 - 前途无量YY
  • 2026年最新阳泉市口碑首选;黄金回收铂金回收白银回收彩金回收实力权威靠谱门店TOP5推荐及咨询方式 - 前途无量YY
  • Google AX 控制面拆解:分布式 Agent 如何把断点恢复、审计策略和执行调度收进同一条链路
  • 遗传算法工程实践:选择交叉变异参数调优与收敛性控制