【题解】CF1722F L-shapes
2024-10-20 13:49:33
题面传送门
其实这题根本不用搜索,有耐心即可。
可以发现,在 \(n\times m\) 范围内扫,可能合法的只有以下四种情况,其中蓝色代表示是 *
,红色表示不能是 *
,其中黄色五角星表示当前 \(i,j\) 的位置。
所以只要把 *
标记为 \(1\),全图扫一遍,发现合法就给它变 \(0\),看最后有没有 \(1\) 剩余即可。
Code:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int T,n,m,a[55][55];
char c;
void search(int i,int j){
if(a[i+1][j]&&a[i+1][j+1]&&!a[i-1][j-1]&&!a[i-1][j]&&!a[i-1][j+1]&&
!a[i][j-1]&&!a[i][j+1]&&!a[i][j+2]&&!a[i+1][j-1]&&!a[i+1][j+2]&&
!a[i+2][j-1]&&!a[i+2][j]&&!a[i+2][j+1]&&!a[i+2][j+2]){
a[i][j]=a[i+1][j]=a[i+1][j+1]=0;
return ;
}
if(a[i+1][j-1]&&a[i+1][j]&&!a[i-1][j-1]&&!a[i-1][j]&&!a[i-1][j+1]&&
!a[i][j-2]&&!a[i][j-1]&&!a[i][j+1]&&!a[i+1][j-2]&&!a[i+1][j+1]&&
!a[i+2][j-2]&&!a[i+2][j-1]&&!a[i+2][j]&&!a[i+2][j+1]){
a[i][j]=a[i+1][j-1]=a[i+1][j]=0;
return ;
}
if(a[i][j+1]&&a[i+1][j+1]&&!a[i-1][j-1]&&!a[i-1][j]&&!a[i-1][j+1]&&
!a[i-1][j+2]&&!a[i][j-1]&&!a[i][j+2]&&!a[i+1][j-1]&&!a[i+1][j]&&
!a[i+1][j+2]&&!a[i+2][j]&&!a[i+2][j+1]&&!a[i+2][j+2]){
a[i][j]=a[i][j+1]=a[i+1][j+1]=0;
return ;
}
if(a[i][j+1]&&a[i+1][j]&&!a[i-1][j-1]&&!a[i-1][j]&&!a[i-1][j+1]&&
!a[i-1][j+2]&&!a[i][j-1]&&!a[i][j+2]&&!a[i+1][j-1]&&!a[i+1][j+1]&&
!a[i+1][j+2]&&!a[i+2][j-1]&&!a[i+2][j]&&!a[i+2][j+1]){
a[i][j]=a[i][j+1]=a[i+1][j]=0;
return ;
}
}
void solve(){
scanf("%d%d",&n,&m);
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>c;
if(c=='*') a[i][j]=1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]==1) search(i,j);
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]==1){
printf("NO\n");
return ;
}
}
}
printf("YES\n");
}
int main(){
scanf("%d",&T);
while(T--) solve();
return 0;
}
最新文章
- 大数据系列-CDH环境中SOLR入数据
- JdbcTemplate使用总结
- POJ1326问题描述
- Nginx工作原理和优化
- C++组合问题
- HDU 5311 Hidden String (暴力)
- 转化为用欧几里得算法判断互质的问题D - Wolf and Rabbit
- 修改替换/system/framework/framework.jar后重启手机为何没有效果?
- Linux IP_FORWARD说明
- 二叉树Bynary_Tree(2):二叉树的递归遍历
- 远程服务调用(RMI)
- 【Learning】 欧拉回路的求解
- spring-data-rest的魔力 10分钟实现增删改查
- UVA10723 电子人的基因 Cyborg Genes
- Python_装饰器进阶_32
- tomcat redis 集群 session共享
- JMS学习(八)-ActiveMQ Consumer 使用 push 还是 pull 获取消息
- PHP检测数组中的每个值是否含有特殊字符
- 高德地图JS-API (超简单Get新技能√)
- SQL2008R2 安装图解
热门文章
- session,cookie,jwt的简单使用
- 【MySQL】从入门到掌握1-一些背景知识
- 【java】学习路径16-重写Object方法(equals()等)
- 牛客练习赛99—C
- 第六篇:vue.js模板语法(,属性,指令,参数)
- 第十四章 二进制部署k8s集群的平滑升级
- Session认证机制与JWT认证机制
- spark 读取Geomesa(Hbase)数据
- Linux查看文件内容和压缩文件命令
- es,logstash各版本对应要求的JDK版本,操作系统对应示意图