洛谷 P4961

左手的ㄟ右手 2021-10-26 20:28 597阅读 0赞

目录

  • 题目
  • 思路
  • Code

题目


为了小埋A了这道题。

思路

读入原来的矩阵,将不是雷的格子更新为数字(数字就是该格子周围八格的雷的个数)将是雷的格子赋值为inf。然后就按照题目要求计算周围八格没有“空格”的“数字”个数和“空”的个数。

Code

  1. #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; }

转载于:https://www.cnblogs.com/poi-bolg-poi/p/11063148.html

发表评论

表情:
评论列表 (有 0 条评论,597人围观)

还没有评论,来说两句吧...

相关阅读

    相关 p1164

    > P1164 小A点菜 > > 题目描述 > > uim口袋里有剩M元(M<=10000)。 > > 餐馆虽低端,但是菜品种类不少,有N种(N<=100),第i

    相关 P1540 机器翻译

    题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文

    相关 P3382

    题目:[点击打开链接][Link 1] 题意:如题,给出一个N次函数,保证在范围\[l,r\]内存在一点x,使得\[l,x\]上单调增,\[x,r\]上单调减。试求出x

    相关 P1540——机器翻译

    题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义

    相关 P1113 杂务

    洛谷 P1113 杂务 Description `John`的农场在给奶牛挤奶前有很多杂务要完成,每一项杂务都需要一定的时间来完成它。比如:他们要将奶牛集合起

    相关 P1396 营救

                        [洛谷 P1396 营救][P1396]   题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查