题目
题意给定n*m的01二维矩阵,现可以从01矩阵中选择一个L型的、由3个字符组成的连通块,要求该L型联通块至少包含一个1。并将选中的连通块,字符都变为0。
问,在01矩阵全部变成0之前,最多能用使用多少次L型联通块。
比如4*3的01矩阵
101
111
011
110
它最多可以执行8次
贪心。 如果图中存在一个L型的、包含2个0的联通块,那么我们可以不浪费任何一个1。此时,图中有多少个1,我们就可以应用多少次L型连通块。 因为我们从包含2个0的L型联通块开始,逐个的侵蚀所有的1。最后,地图就全部变成0啦。
如果图中不存在一个L型的、包含2个0的联通块,但存在一个L型的、包含1个0的联通块。那么此时,我们只能牺牲一个1了。即初始选择的L型连通块,会包含2个1。
如果图中不存在0,那么此时我们就只能牺牲2个1了。即初始选择的L型连通块,会包含3个1。
详见代码
代码#include
using namespace std;
#define ll long long
const int maxn = 510;
const int mod = 998244353;
int n, m;
char s[maxn][maxn];
int dx[] = {0, 0, 1, -1, -1, -1, 1, 1};
int dy[] = {1, -1, 0, 0, -1, 1, -1, 1};
bool check(int x, int y) {
if (x = n || y = m) {
return false;
}
return true;
}
void solve() {
scanf("%d%d", &n, &m);
for (int i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?