洛谷 1331.海战

这道题其实对于那个船的相邻问题说的相当不清楚,因为既然不是一条船,为什么还相邻呢?让人有点摸不到头脑。

总之可以用dfs来解决。你也可以选择用bfs,这个模型本质上就是flood fill。

至于判断条件,也就是在一个#为中心,向上下左右进行判断,如果加上自身#个数为3,就说船和船之间就是相邻的。

#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<cmath> 
#include<vector>
#include<algorithm>
#include<stack>
#include<queue>
#include <iomanip>
#include<sstream>
#include<numeric>
#include<map>
#include<limits.h>
#include<unordered_set>
#include<set>
#define int long long
#define MAX 1010
#define _for(i,a,b) for(int i=a;i<(b);i++)
#define ALL(x) x.begin(),x.end()
using namespace std;
typedef pair<int, int> PII;
int n, m;
int counts;
int dx[] = { -1,1,0,0 };
int dy[] = { 0,0,-1,1 };
queue<PII>q;
char maps[MAX][MAX];
int flag[MAX][MAX];
int taidu[MAX][MAX];
void dfs(int x, int y) {maps[x][y] = '*';_for(i, 0, 4) {int a = dx[i] + x;int b = dy[i] + y;if (a<1 || a>n || b<1 || b>m)continue;if (maps[a][b] != '#')continue;if (taidu[a][b])continue;taidu[a][b] = 1;dfs(a, b);}
}
bool check(int x, int y) {int cnt = 0;if (maps[x][y] == '#')cnt++;if (maps[x + 1][y] == '#')cnt++;if (maps[x][y + 1] == '#')cnt++;if (maps[x + 1][y + 1] == '#')cnt++;return cnt == 3 ? false : true;
}
signed main() {ios::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL);cin >> n >> m;_for(i, 1, n + 1)_for(j, 1, m + 1)cin >> maps[i][j];_for(i, 1, n + 1) {_for(j, 1, m + 1) {if (!check(i, j)){cout << "Bad placement.";return 0;}}}_for(i, 1, n + 1) {_for(j, 1, m + 1) {if (!taidu[i][j] && maps[i][j] == '#') {taidu[i][j] = 1;dfs(i, j);counts++;}}}cout << "There are " << counts << " ships.";return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/791860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JMeter+Grafana+influxdb 配置出现transaction无数据情况解决办法

JMeterGrafanainfluxdb 配置出现transaction无数据情况解决办法 一、问题描述二、解决方法 一、问题描述 如下图所示出现application有数据但是transaction无数据情况 二、解决方法 需要做如下设置 打开变量设置如下图打开两个选项 然后再进行后端监听器的设置 如下图所…

Ansible批量更新远程主机用户密码 (包括Ansible批量做ssh互信)

按照集团运维信息安全制度, 需要每个一段时间对线上服务器密码进行一次变更&#xff0c;通过shell脚本部署比较繁琐&#xff0c;所以决定采用ansible脚本对远程主机root密码进行批量重置&#xff0c;该脚本已经在稳定运行在正式环境下。具体方法如下: 1) 在服务端安装ansible …

数据结构进阶篇 之 【交换排序】(冒泡排序,快速排序递归、非递归实现)

当你觉的自己不行时&#xff0c;你就走到斑马线上&#xff0c;这样你就会成为一个行人 一、交换排序 1.冒泡排序 BubbleSort 1.1 基本思想 1.2 实现原理 1.3 代码实现 1.4 冒泡排序的特性总结 2.快速排序 QuickSort 2.1 基本思想 2.2 递归实现 2.2.1 hoare版 2.2.2 …

软件设计原则:里氏替换原则

定义 里氏替换原则&#xff08;Liskov Substitution Principle, LSP&#xff09;确保继承表现为一种类型扩展而非类型的重定义。具体而言&#xff0c;如果类型 S 是类型 T 的子类型&#xff0c;则类型 T 的对象可以在程序中被类型 S 的对象替换&#xff08;即&#xff0c;类型…

NoSQL之Redis

目录 一、关系型数据库与非关系型数据库 1.关系数据库 2.非关系数据库 2.1非关系型数据库产生背景 3.关系型数据库与非关系型数据区别 &#xff08;1&#xff09;数据存储方式不同 &#xff08;2&#xff09;扩展方式不同 &#xff08;3&#xff09;对事物性的支持不同 …

关于VueCli项目中如何加载调试Worker和SharedWorker

安装Webpack插件 VueCli 项目中默认是没有加载 worker 的配置&#xff0c;需要额外安装 webpack 插件来实现&#xff0c;让我们开始安装 worker-loader 插件 # npm npm install worker-loader # pnpm pnpm install worker-loader # yarn yarn add worker-loader配置Webpack插…

微服务(基础篇-008-es、kibana安装)

目录 05-初识ES-安装es_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1LQ4y127n4?p81&vd_source60a35a11f813c6dff0b76089e5e138cc 1.部署单点es 1.1.创建网络 1.2.加载镜像 1.3.运行 2.部署kibana 2.1.部署 2.2.DevTools 3.安装IK分词器 3.1.在线安装ik…

装修避坑指南 | 定制家具你遇到过哪些坑?福州中宅装饰,福州装修

定制家具时可能会遇到以下一些常见问题&#xff1a; 尺寸不准确&#xff1a;由于定制家具需要按需定制&#xff0c;对尺寸的要求很高。如果尺寸不准确&#xff0c;很可能会导致安装困难或者家具不符合空间需求。 材料质量差&#xff1a;有些厂家可能会使用质量较差的材料来降…

[AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步

目录 关键词平台说明背景一、implicit synchronization1.1 Write requests 流程 (NvM_WriteBlock)1.2 Read requests 流程 (NvM_ReadBlock)1.3 Restore default requests 流程 (NvM_RestoreBlockDefaults)1.4 Multi block read requests 流程 (NvM_ReadAll)1.5 Multi block wri…

C# BitConverter

BitConverter大端小端转16进制 BitConverter BitConverter 是 C# 中的一个类&#xff0c;它提供了用于字节顺序操作的方法&#xff0c;包括在基本数据类型&#xff08;如 int、float、double 等&#xff09;和它们的字节表示之间转换的方法。这个类在处理二进制数据、网络编程…

【Python系列】 yaml中写入数据

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

WEB漏洞-文件上传之基础及过滤方式

目录 案例1&#xff1a;百度搜索关键词&#xff0c;找到可能存在漏洞的网页 案例2&#xff1a;不同格式下的文件类型后门测试 案例3&#xff1a;配合解析漏洞下的文件类型后门测试 案例4&#xff1a;本地文件上传漏洞下的文件类型后门测试 案例5&#xff1a;某CVE漏洞利用…

Java基础知识总结(38)

&#xff08;1&#xff09;Arrays工具类 Java提供了Arrays工具类&#xff0c;里面包含了一些方法&#xff0c;可以直接操作数组。 1、int binarySearch(long[] a, long key)&#xff1a;使用二分查找法查询key元素值在数组a中出现的索引&#xff0c;如果a数组不包含key元素&…

MySQL索引原理

MySQL索引原理 1、Innodb中的B树是怎么产生的呢? 背景1.1、mysql索引使用B树&#xff0c;为什么&#xff1f;1.2、主键索引图示1.3、mysql最好使用自增ID&#xff1a;为什么呢&#xff1f;1.4、高度为3的B树能存多少条数据&#xff1f;a、假设2层b、假设3层 2、索引采用什么数…

从0到1构建uniapp应用-store状态管理

背景 在 UniApp的开发中&#xff0c;状态管理的目标是确保应用数据的一致性&#xff0c;提升用户体验&#xff0c;并简化开发者的工作流程。通过合理的状态管理&#xff0c;可以有效地处理用户交互、数据同步和界面更新等问题。 此文主要用store来管理用户的登陆信息。 重要…

Dubbo入门项目搭建【Dubbo3.2.9、Nacos2.3.0、SpringBoot 2.7.17、Dubbo-Admin 0.6.0】

B站学习视频 基于Dubbo3.2.9、Nacos2.3.0、SpringBoot 2.7.17、Dubbo-Admin 0.6.0、Jdk1.8 搭建的Dubbo学习Demo 一、前置安装 1-1、Nacos 安装 我本地是通过docker-compose来安装nacos的&#xff0c;如果需要其它方式安装可以去百度找下教程&#xff0c;版本是2.3.0的 docker…

新模因币MVP正在受到关注,预计将超越 SHIB 和 BONK

随着一种新的模因币TRUMP进入爆发式增长&#xff0c;加密市场开始对这种基于选举和权利的模因币充满了期待。并引发了人们对过去“玩笑式”模因币未来的疑问&#xff0c;因为当人们审视区块链与现实的意义时&#xff0c;发现&#xff08;SHIB) 和 Bonk (BONK) 等成熟模因币这样…

常见滤波算法(PythonC版本)

简介 受限于MCU自身的ADC外设缺陷&#xff0c;精度和稳定性通常较差&#xff0c;很多场景下需要用滤波算法进行补偿。滤波的主要目的是减少噪声与干扰对数据的影响&#xff0c;让数据更加接近真实值。 一阶低通滤波 一阶低通滤波是一种信号处理技术&#xff0c;用于去除信号中…

TextDecoder 用法大全:解码二进制数据到文本字符串的利器

在Web开发中&#xff0c;我们经常需要处理二进制数据&#xff0c;比如从网络请求中获取的响应数据。为了将这些二进制数据转换为人类可读的文本字符串&#xff0c;我们可以使用TextDecoder这个强大的Web API。下面&#xff0c;我将为大家详细讲解TextDecoder的用法。 一、创建T…

call、apply、bind的区别与应用场景

一、概念 为什么会有call和apply&#xff1f; call和apply两个方法的作用基本相同&#xff0c;它们都是为了改变某个函数执行时的上下文&#xff08;context&#xff09;而建立的&#xff0c; 他的真正强大之处就是能够扩充函数赖以运行的作用域。通俗一点讲&#xff0c;就是…