洛谷 P4961
2024-08-30 02:32:09
题目
戳
为了小埋A了这道题。
思路
读入原来的矩阵,将不是雷的格子更新为数字(数字就是该格子周围八格的雷的个数)将是雷的格子赋值为inf
。然后就按照题目要求计算周围八格没有“空格”的“数字”个数和“空"的个数。
Code
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<iomanip>
#include<algorithm>
using namespace std;
const int inf=0x3f3f3f;
int n,m,sum1,sum2;
int dx[10]={0,1,-1,1,1,-1,-1,0,0},dy[10]={0,0,0,1,-1,1,-1,1,-1};
bool map0[1001][1001];
int map1[1001][1001];
inline int read(){
int x=0;
bool f=0;
char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=!f;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return f?-x:x;
}//读优
void js(int x,int y){
int sum=0;
for(int i=1;i<=8;++i){
int c=x+dx[i],d=y+dy[i];
if(c>0&&c<=n&&d>0&&d<=m&&map0[c][d]) sum++;
}
map1[x][y]=sum;
}//更新数字的函数
bool pd(int x,int y){
bool qaq=0;
for(int i=1;i<=8;++i){
int c=x+dx[i],d=y+dy[i];
if(c>0&&c<=n&&d>0&&d<=m&&map1[c][d]==0){
qaq=1;
break;
}
}
if(qaq) return false;
return true;
}
void k(int x,int y){
map1[x][y]=-1;
for(int i=1;i<=8;++i){
int c=x+dx[i],d=y+dy[i];
if(c>0&&c<=n&&d>0&&d<=m&&map1[c][d]==0){
k(c,d);
}
}
}
int main(){
n=read();m=read();
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
map0[i][j]=read();
if(map0[i][j]) map1[i][j]=inf;
}
}//读入,和预处理。
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(!map0[i][j]) js(i,j);
}
}//更新数字。
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(map1[i][j]!=0&&map1[i][j]!=inf){
if(pd(i,j)) sum1++;
}
}
}//计算周围八格没有空格的个数
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(map1[i][j]==0){
k(i,j);
sum2++;
}
}
}//计算空的个数
cout<<sum1+sum2;
return 0;
}
最新文章
- Jquery中each的三种遍历方法
- 吉特仓库管理系统-.SQL Server 2012 升级企业版
- hibernateTemplate.find或hibernateTemplate.save()执行操作没有反应,但是有sql语句
- sublime text多文件夹查找关键字
- HDU 4670 Cube number on a tree
- (转载)Javascript 进阶 作用域 作用域链
- NSIS:迅雷5.8.6.600自由定制版脚本及下载
- linux undelete
- 使用 PUTTY 操作 Google Cloud
- Java中常用的数据结构类
- Java结合SpringBoot拦截器实现简单的登录认证模块
- UC和QQ两个主流浏览器 * 点击触发微信分享到朋友圈或发送给朋友的功能(转载)
- 李航《统计学习方法》CH01
- Zabbix客户端日志出现(Not all processes could be identified, 解决
- BZOJ.3351.[IOI2009]Regions(根号分治 差分)
- 基于maven构建javaweb项目思路梳理及改进
- JVM 字节码(三)异常在字节码中的处理(catch 和 throws)
- Building Tablet PC Applications ROB JARRETT
- CMSIS-DAP for STLink V2.1 and STLink v2.1 mini adapter
- 【Nginx笔记】 fastcgi_param解释
热门文章
- Jenkins之发布报错“error: RPC failed; curl 18 transfer closed with outstanding read data remaining”
- DTO和ViewModel的区别
- Linux 安装gcc4.8版本
- oracle删除数据库表空间
- nodejs下express+ejs环境搭建
- 微信小程序开发-微信登陆流程
- copyin函数
- mysql命令行执行时不输出列名(字段名)
- JavaEE汇总
- webpack前端构建工具学习总结(四)之自动化生成项目中的html页面