[ABC334E] Christmas Color Grid 1

洛谷题目链接

Atcoder题目链接

分析

发现将每个红色连通块涂成绿色连通块后,绿色连通块个数会加一,但是如果这个连通块之前已经跟绿色连通块相邻,则连通块数量减一。

代码

#include <bits/stdc++.h>
#define int long longusing namespace std;const int N = 1005, mod = 998244353;
int n, m, cnt, ans, tot, vis[N][N];
int dx[] = {0, 0, -1, 1}, dy[] = {-1, 1, 0, 0};
char c[N][N];void dfs(int x, int y, int d){if(c[x][y] != '#' || vis[x][y]){return ;}vis[x][y] = d;for(int i = 0; i < 4; i ++){int nx = x + dx[i], ny = y + dy[i];dfs(nx, ny, d);}
}
int qpow(int n, int m, int p){ int res = 1;while(m){if(m & 1){res = res % p * n % p;}n = n % p * n % p;m >>= 1;}return res; 
}signed main(){cin >> n >> m;for(int i = 0; i <= n + 1; i ++){for(int j = 0; j <= m + 1; j ++){c[i][j] = '6';}}for(int i = 1; i <= n; i ++){for(int j = 1; j <= m; j ++){cin >> c[i][j];}}for(int i = 1; i <= n; i ++){for(int j = 1; j <= m; j ++){if(c[i][j] == '#' && !vis[i][j]){cnt ++;dfs(i, j, cnt);}}}for(int i = 1; i <= n; i ++){for(int j = 1; j <= m; j ++){if(c[i][j] == '.'){tot ++;map <int, bool> mp;for(int k = 0; k < 4; k ++){int nx = i + dx[k], ny = j + dy[k];if(c[nx][ny] == '#'){mp[vis[nx][ny]] = true;}}ans += cnt - mp.size() + 1;ans %= mod;}}}cout << ans * qpow(tot, mod - 2, mod) % mod;return 0;
}

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

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

相关文章

11. 线程

11. 线程 1. 线程概述1.1 线程概念1.1.1 什么是线程1.1.2 线程是如何创建起来的1.1.3 线程的特点1.1.4 线程与进程 1.2 并发和并行 2. 线程 ID3. 创建线程4. 终止线程5. 回收线程6. 取消线程6.1 取消一个线程6.2 取消状态以及类型6.3 取消点6.4 线程可取消性的检测 7. 分离线程…

【React系列】Hook(一)基本使用

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 认识hook 1.1. 为什么需要hook Hook 是 React 16.8 的新增特性&#xff0c;它可以让我们在不编写class的情况下…

OpenFeign相关问题及答案(2024)

1、什么是OpenFeign&#xff0c;它如何简化远程服务调用&#xff1f; OpenFeign是一个声明式的Web服务客户端&#xff0c;它使得编写HTTP客户端变得更加容易。它属于Spring Cloud Netflix项目的一部分&#xff0c;可以与Spring Boot应用轻松集成。通过使用OpenFeign&#xff0…

群晖Docker部署HomeAssistant容器结合内网穿透远程控制家中智能设备

目录 一、下载HomeAssistant镜像 二、内网穿透HomeAssistant&#xff0c;实现异地控制智能家居 三、使用固定域名访问HomeAssistant 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转到网站 Ho…

Guava Cache 异步刷新技巧,你值得拥有!

以下文章来源于勇哥Java实战 &#xff0c;作者勇哥 Guava Cache是一款非常优秀的本地缓存框架。 这篇文章&#xff0c;我们聊聊如何使用 Guava Cache 异步刷新技巧带飞系统性能 。 1 经典配置 Guava Cache 的数据结构跟 JDK1.7 的 ConcurrentHashMap 类似&#xff0c;提供了基…

citeSpace保姆级安装使用教程

citeSpace保姆级安装使用教程 文章目录 citeSpace保姆级安装使用教程CiteSpace功能与参数区安装使用知网数据导出citespace数据导入结果 设置操作隐藏节点 CiteSpace功能与参数区 安装 citeSpace安装教程 citespace下载 网址&#xff1a;https://citespace.podia.com/ 安装之…

大A又跌了

才开盘几天&#xff0c;又开始下跌了。生活更加苦难。期待高深算法。

18、Kubernetes核心技术 - InitContainer(初始化容器)

目录 一、概述 二、使用InitContainer 一、概述 InitContainer即初始化容器&#xff0c;是 K8S官方为我们提供的一个可以用来判断环境是否已经满足运行 Pod 应用前所需要的条件。 比如我们有一个应用&#xff0c;需要部署到Tomcat环境&#xff0c;那么在部署这个应用Pod之前…

STM32使用中断方式进行USART数据收发以及printf函数的重写

时间记录&#xff1a;2024/1/5 一、USART/UART介绍 协议介绍 &#xff08;1&#xff09;起始位&#xff0c;一位逻辑电平0表示 &#xff08;2&#xff09;数据位&#xff0c;8-9位&#xff0c;逻辑高低电平&#xff0c;一般使用8位 &#xff08;3&#xff09;校验位&#xff…

DevOps(5)

目录 21.如何在Linux下访问分区&#xff1f; 22.什么是硬链接&#xff1f; 23.Linux下文件名的最大长度是多少&#xff1f; 24.什么是以点开头的文件名&#xff1f; 25.解释虚拟桌面&#xff1f; 21.如何在Linux下访问分区&#xff1f; Linux在驱动器标识符的末尾分配数字…

如何获取时间戳?

获取现在的时间0时0秒 一、JavasCRIPT时间转时间戳 JavaScript获得时间戳的方法有五种&#xff0c;后四种都是通过实例化时间对象new Date() 来进一步获取当前的时间戳&#xff0c;JavaScript处理时间主要使用时间对象Date Date.now()可以获得当前的时间戳&#xff1a; con…

2-sql注入之sqli-labs靶场搭建

文章目录 SQL注入之sqli-labs靶场搭建1、Sqli-labs环境安装需要安装以下环境工具下载链接&#xff1a; 2、phpstudy连接mysql总是启动了又停止第一种情况可能是端口占用问题第二种情况就是曾经在电脑上安装过mysql SQL注入之sqli-labs靶场搭建 Sqli-labs是一个印度程序员写的&…

vmware中ubuntu虚拟机不能够用共享文件夹

有时候发现装好虚拟机后&#xff0c;然后 虚拟机-设置-选项-共享文件夹 然后使用快捷键ctrlaltt 打开命令行&#xff0c;cd /mnt下没有看到hgfs文件夹 解决办法是安装vmware tools工具 此时想通过点击 虚拟机-安装vmwaretools工具 按钮 居然发现该按钮是灰色的&#xff0…

CMake入门教程【核心篇】动态库(dll, so)

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 CMake入门教程【核心篇】动态库(dll, so)1.简介2.动态库的优势3.动态库的劣势4.创建动态库5.完整代码示例6.实战使用技巧与注意事项

实现文件拖拽上传的功能

1 先来看一下效果 2 我们来看一下代码执行的结果&#xff1a; 我们创建目标的容器盒子 和可以展示数据的ul 监听进入目前盒子的事件 3 文件进入目标容器中解析文件

Python中 的函数介绍

函数 在Python中,函数是用来执行某种功能的 函数定义 def function_name(参数列表):代码块[return val]比如 #---------------定义------------- def add_3(num):newnum num3return newnumnum 3 print(add_3(num))函数调用 def add_3(num):newnum num3return newnumnum …

科研上新 | 第6期:优化LLM数学推理;深度学习建模基因表达调控;基于深度学习的近实时海洋碳汇估算

编者按&#xff1a;欢迎阅读“科研上新”栏目&#xff01;“科研上新”汇聚了微软亚洲研究院最新的创新成果与科研动态。在这里&#xff0c;你可以快速浏览研究院的亮点资讯&#xff0c;保持对前沿领域的敏锐嗅觉&#xff0c;同时也能找到先进实用的开源工具。 本期内容速览 …

Namp扫描工具的使用

写在前面&#xff1a; Nmap是一款应用广泛的网络探测工具&#xff0c;它可以识别网络中计算机及操作系统、检测端口、识别协议指纹、检测文件传输以及执行安全扫描等功能&#xff0c;从而防止攻击行为的发生。 一、介绍 Nmap&#xff08;Network Mapper&#xff09;是一个网…

在 IDEA 中创建JavaWeb 项目的方式(超详细步骤教程和遇到的问题)

目录 0-1项目图片操作步骤链接0-2项目结构预览1.新建Project2.定义项目名称3.创建完成后项目结构4.创建config文件夹4.1 作用 5.在WEB-INF下创建lib文件夹5.1然后搞几个常用的jar包放入5.1.1jar包全选中后右键选择放入类库5.1.2jar包全选中后右键选择放入类库 6.创建src下文件夹…

软件测试金融项目经验总结,面试题都问什么?

1、APP端/客户端接口加解密介绍 加密方式&#xff08;两种&#xff09;&#xff1a; 在TCP/IP四层模型中的应用层进行加密。类似密码本&#xff0c;当前项目使用的是这种&#xff0c;可以看到所有响应内容&#xff0c;只是看不懂。 在TCP/IP四层模型中的运输层和应用层之间进行…