专栏文章
题解:AT_abc390_c [ABC390C] Paint to make a rectangle
AT_abc390_c题解参与者 2已保存评论 2
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @miqe3b77
- 此快照首次捕获于
- 2025/12/04 03:18 3 个月前
- 此快照最后确认于
- 2025/12/04 03:18 3 个月前
[ABC390C] Paint to make a rectangle
题意
有一个 行 列的网格,若 表示网格中第 行,第 列的单元格。
对于每个网格,有
. 、#、?三种状态:1.若该网格的状态为.则 被涂成白色;
2.若该网格的状态为#则 被涂成黑色;
3.若该网格的状态为?则 尚未涂黑;
将每个
, 。
? 单元格涂成黑色或白色,使得所有的黑色单元格组成一个矩形。, 。
题目中要求所有的黑色单元格组成一个矩形,所以在已经确定的黑色单元格
# 出现的上下左右界所框定的矩形中,必须全为 ? 与 # ;换句话说,在这个矩形中若是出现 . 就可以肯定不存在满足题目要求的情况。所以,我们可以在输入时找出黑色单元格
# 出现的上下左右界,再遍历这个矩形,判断是否出现了 .,最后输出答案就可以了。CODE:
CPP#include<bits/stdc++.h>
using namespace std;
#define oo 0x3f3f3f3f
char a[1005][1005];
int n,m;
int mu=oo,md=-oo,ml=oo,mr=-oo;//初始化
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
if(a[i][j]=='#'){
mu=min(mu,i);//找出上下左右界
ml=min(ml,j);
md=max(md,i);
mr=max(mr,j);
}
}
}
for(int i=mu;i<=md;i++){
for(int j=ml;j<=mr;j++){
if(a[i][j]=='.'){//出现'.'就直接输出No
cout<<"No"<<"\n";
return 0;
}
}
}
cout<<"Yes"<<"\n";
return 0;
}
AC 记录
蒟蒻的第一篇题解,点个赞支持一下呗。 qwq。
蒟蒻的第一篇题解,点个赞支持一下呗。 qwq。
相关推荐
评论
共 2 条评论,欢迎与作者交流。
正在加载评论...