[ABC334E] Christmas Color Grid 1

2024-01-05 23:28
文章标签 grid color christmas abc334e

本文主要是介绍[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;
}

这篇关于[ABC334E] Christmas Color Grid 1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/574501

相关文章

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

三色标记(Tri-color marking)

维基百科部分 原文 https://en.wikipedia.org/wiki/Tracing_garbage_collection#TRI-COLOR Because of these performance problems, most modern tracing garbage collectors implement some variant of the tri-color ma

LibSVM学习(六)——easy.py和grid.py的使用

我们在“LibSVM学习(一)”中,讲到libSVM有一个tools文件夹,里面包含有四个python文件,是用来对参数优选的。其中,常用到的是easy.py和grid.py两个文件。其实,网上也有相应的说明,但很不系统,下面结合本人的经验,对使用方法做个说明。        这两个文件都要用python(可以在http://www.python.org上下载到,需要安装)和绘图工具gnup

HDU 1556 Color the ball (树状数组-- 区间更新,单点求值)

OJ题目 :点这里~~ 与 单点更新,区间求值 稍有不同,需要理解注意。 AC_CODE int n;int num[100002];int lowbit(int x){return x&(-x);}int sum(int x){int ret = 0;while(x > 0){ret += num[x];x -= lowbit(x);}return ret;}void ad

extjs 获取grid的选中行的某列的值

我的情景是这样的:一个grid(就叫gridA吧),最后一列的每行都是超链接,点击超链接时会弹出一个窗体,这个窗体也需要一个grid(gridB)展示,并且呢,gridB所需的数据需要gridA里的某列的值(把这个列叫做Param)作为参数。于是就产生了点击gridA的某行的超链接,获取该行的Param列的值这样的需求。 不知道为什么,我用var param=this.grid..getSe

Extjs Grid 根据列的值(0或者1)显示“是或否”

grid中:{header:'是否解析',dataIndex:'isExplain',align:'center',sortable: true,renderer:isResend}, 写一个函数: function isResend(data, metadata, record){ var resend; if(record.data.isExplain==0){resend="否";

extjs中grid,设置CheckboxSelectionModel的默认值

Grid(命名为BasicGrid)中定义了:this.sm = new Ext.grid.CheckboxSelectionModel();。表示一列checkBox。 情景:上面Grid所在的窗口弹出之后,选择一项(我这里是只选一项)点击确定之后关闭该窗口。当需要再次弹出该窗口时,把刚刚已经选择的那一项打上勾。下面是方法:我是写在弹出该窗口的方法中的。

[C++] 将LONG类型的color值转换为RGB值

转换原理: The calculation is: (65536 * Blue) + (256 * Green) + (Red) 'Convert RGB to LONG: LONG = B * 65536 + G * 256 + R       'Convert LONG to RGB:  B = LONG \ 65536  G = (LONG - B * 65536) \ 256  R =

AngularJS的ui-grid的列表数据实现换行

在公共css中添加如下: .ui-grid-cell-contents-break { padding: 5px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; overflow: hidden; height: 100%; word-break: break