首页 > 其他分享 >图的连通性,注意非法下标的处理情况

图的连通性,注意非法下标的处理情况

时间:2022-10-26 21:01:10浏览次数:61  
标签:Map 连通性 LianTong int Max 非法 addLand 标的 Result


题目描述

给定一个m行n列的二维地图, 初始化每个单元都是水.

操作addLand 把单元格(row,col)变成陆地.

岛屿定义为一系列相连的被水单元包围的陆地单元, 横向或纵向相邻的陆地称为相连(斜对角不算).

在一系列addLand的操作过程中, 给出每次addLand操作后岛屿的个数.

二维地图的每条边界外侧假定都是水.

输入描述:


多组测试数据,请参考例题处理 每组数据k+3行, k表示addLand操作次数 第一行:表示行数m 第二行:表示列数n 第三行:表示addLand操作次数k 第4~k+3行:row col 表示addLand的坐标。注意超过边界的坐标是无效的。


输出描述:


一行,k个整数, 表示每次addLand操作后岛屿的个数, 用空格隔开,结尾无空格


示例1

输入

复制


3 3 4 0 0 0 1 1 2 2 1


输出

复制


1 1 2 3


#include<vector>
#include<iostream>
using namespace std;

int m,n,k;

int main(){
cin >> m >> n >> k;
int Max = 0;
vector<int> Result;
vector<vector<int>> Map(m,vector<int>(n,0));
for(int i = 0;i < k;i ++){
int x,y;int LianTong = 0;
cin >> x >> y;
if(Map[x][y] == 1 || x < 0 || y < 0 || x >=m || y >= n){
Result.push_back(Max);
continue;
}
Map[x][y] = 1;
if(x - 1 >= 0 && Map[x - 1][y] == 1){
LianTong++;
}
if(x + 1 < m && Map[x + 1][y] == 1){
LianTong++;
}
if(y - 1 >= 0 && Map[x][y - 1] == 1){
LianTong++;
}
if(y + 1 < m && Map[x][y + 1] == 1){
LianTong++;
}
Max = max(Max - LianTong + 1,1);
Result.push_back(Max);
}
for(int i = 0;i < Result.size() - 1;i ++){
printf("%d ",Result[i]);
}
printf("%d",Result[Result.size() - 1]);
return 0;
}

结题思路:

Max为前k-1次操作得到的陆地数量

当下标超出范围或者Map[i][j]==1的时候,vector直接压入

当Map[i][j] != 1的时候,判断Map[i][j]的上下左,变量LianTong自加一

Max = max(Max - LianTong + 1,1),这里为啥需要和1比较呢,假设两个环互不相交,而(i,j)这个点变成陆地后,这两个环相交了,那么我们的Max-LianTong就是负数,而事实上我们得到的是一个联通的陆地,尴尬!

标签:Map,连通性,LianTong,int,Max,非法,addLand,标的,Result
From: https://blog.51cto.com/u_13121994/5798518

相关文章

  • CF 869E(The Untended Antiquity-Hash值维护连通性)
    一个地图,然后三种操作1.一个矩阵四周加上障碍(不与任何障碍相交)2.一个矩阵四周的障碍消除3.问你两个点之间是否纯在一条路径不经过障碍矩阵大小2500^2,操作10w树状......
  • ICO图标的制作和实际应用场景
    什么是ICO图标favicon,即FavoritesIcon的缩写,是指显示在浏览器收藏夹、地址栏和标签标题前面的个性化图标。以图标的方式区别不同的网站。ICO是Windows的图标文件格式,此格......
  • 非法DHCP server 检测?开玩笑~
    近期有个项目,负责为某单位建设态势感知平台,项目中除基本态势感知功能外还有3个定制需求,今天就针对其中的一个进行分享~需求:检测接入到网络当中的非法DHCPserver(这里的DHCP......
  • 力扣leetcode 第2394题 求工作时间不达标的员工
    力扣leetcode第2394题求工作时间不达标的员工selectemployee_idfrom(selectDISTINCTe.employee_id,e.needed_hours*60asneeded_hours,ifnull((selectsum(......
  • 微光互联 TX800-U 扫码器无法输出中文到光标的问题
    问题背景某检测场有一批扫码器,购于微光互联,型号TX800-U,用于在不同办理窗口间扫描纸质材料上的二维码,简化录入过程。扫码器通过USB接入PC系统(windows),自动安装驱动,......
  • 微光互联 TX800-U 扫码器无法输出中文到光标的问题
    问题背景某检测场有一批扫码器,购于微光互联,型号TX800-U,用于在不同办理窗口间扫描纸质材料上的二维码,简化录入过程。扫码器通过USB接入PC系统(windows),自动安装驱动,......
  • 谷歌UX用户体验研究:选择指标的2个模型
    谷歌用户体验度量方法之一就是通过大规模的数据分析,得出结论。想让数据发挥作用,支持设计思维的实践,选对UX用户体验评估模型 ,明确UX用户体验指标很重要。我是谷歌UX......
  • 关于多个 Kubernetes 集群指标的采集操作
    简介在使用观测云期间,有时需要针对一个工作空间接入多个Kubernetes集群指标,通过观测云提供的全局Tag的方式来进行区分,大大提高了效率。下面是我总结的操作步骤。当集......
  • 10月8日内容总结——文件操作之文本模式和二进制模式、文件内光标的移动
    目录一、文件操作1、概念讲解2、通过代码打开文件的两种方式方式一:方法二:一些小知识点总结:二、文件的读写模式1、只读模式(r)2、只写模式(w)3、只追加模式(a)三、文件的操作模式......
  • 力扣1627——带阈值的图连通性
    1627.带阈值的图连通性难度困难有 n 座城市,编号从 1 到 n 。编号为 x 和 y 的两座城市直接连通的前提是: x 和 y 的公因数中,至少有一个 严格大于 ......