题目背景

小埋总是在家中打游戏,一天,她突然想玩Windows自带的扫雷,在一旁的哥哥看见了,想起了自己小时候信息课在机房玩扫雷的日子,便兴致勃勃地开始教小埋扫雷。然而,小埋还是不明白 \mathrm{3bv}3bv(Bechtel's Board Benchmark Value,每局将所有非雷的方块点开所需最少左键点击数,参见扫雷网的教程 )怎么算,于是她找到了你。

题目描述

小埋会告诉你一盘扫雷,用一个 n\times mn×m 的矩阵表示,11 是雷 ,00 不是雷,请你告诉她这盘扫雷的 \mathrm{3bv}3bv 。

周围八格没有“雷”且自身不是“雷”的方格称为“空格”,周围八格有“雷”且自身不是“雷”的方格称为“数字”,由“空格”组成的八连通块称为一个“空”。\mathrm{3bv}=\3bv= 周围八格没有“空格”的“数字”个数++“空"的个数。

如果看不懂上面的计算方式,可以看题目背景中给出的教程,或者看下面的样例解释。

注:八连通

输入格式

第一行有两个整数 nn 和 mm,代表这盘扫雷是一个 n \times mn×m 的矩阵。

后面的 nn 行每行有 mm 个整数,表示这个矩阵,每个数字为 00 或 11,11 代表是雷,00 代表不是雷。

输出格式

一个整数,代表这盘扫雷的 \mathrm{3bv}3bv 。

输入输出样例

输入 #1复制

8 8
0 0 0 1 1 0 0 0
1 0 0 1 0 0 0 1
1 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 

输出 #1复制

13

说明/提示

1\le n,\ m\le 10001≤n, m≤1000

样例解释

上代码:

#include<bits/stdc++.h>//万能大法好
using namespace std;
int a[1000][1000],m,n;//a是雷图,mn是边界
bool booka[1000][1000];//联通快时判重
int xz[8]={-1,-1,-1,0,0,1,1,1},yz[8]={-1,0,1,-1,1,-1,0,1};//八联通!!!
int bv3,lt; //第一个3bv,lt是联通快的数量
void dfs(int x,int y)//联通快
{for(int i=0;i<8;i++){int xx=x+xz[i],yy=y+yz[i];if(xx>=0&&xx<n&&yy>=0&&yy<m&&a[xx][yy]==0&&!booka[xx][yy])//判断边界与重复{booka[xx][yy]=true;//打标记dfs(xx,yy);}}
}
void b(int x,int y)//初始化雷图用的,把格子里填数字
{for(int p=0;p<8;p++){int i=x+xz[p],j=y+yz[p];if(i>=0&&i<n&&j>=0&&j<m&&a[i][j]!=-1) a[i][j]++;}
}
int iff(int x,int y)//判断周围八格是否有空格
{for(int i=0;i<8;i++){int xx=x+xz[i];int yy=y+yz[i];if(xx>=0&&xx<n&&yy>=0&&yy<m&&a[xx][yy]==0)//判空格return 0;}return 1;
}
int main()
{cin>>n>>m;for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>a[i][j];if(a[i][j]==1) a[i][j]=-1;//读入,把雷标记为-1,便于区分数字为 1的无雷格}}for(int i=0;i<n;i++)for(int j=0;j<m;j++)if(a[i][j]==-1)b(i,j);//把有雷格周围八格数字自增for(int i=0;i<n;i++)for(int j=0;j<m;j++)if(a[i][j]!=0&&a[i][j]!=-1&&iff(i,j))bv3++;//周围八格无雷的数字的数量for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(a[i][j]==0&&!booka[i][j]){lt++;//联通快数量dfs(i,j);}}}bv3+=lt;cout<<bv3;//输出答案return 0;
}

洛谷P4961 小埋与扫雷相关推荐

  1. (伟大的dfs)洛谷P4961 小埋与扫雷

    小埋总是在家中打游戏,一天,她突然想玩Windows自带的扫雷,在一旁的哥哥看见了,想起了自己小时候信息课在机房玩扫雷的日子,便兴致勃勃地开始教小埋扫雷.然而,小埋还是不明白 \mathrm{3bv} ...

  2. 题解:P4961 小埋与扫雷

    题目链接: P4961 小埋与扫雷 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 解题思路: 周围八格没有"空格"的"数字"个数求法:枚举所 ...

  3. P4961 小埋与扫雷

    P4961 小埋与扫雷 题目背景 小埋总是在家中打游戏,一天,她突然想玩Windows自带的扫雷,在一旁的哥哥看见了,想起了自己小时候信息课在机房玩扫雷的日子,便兴致勃勃地开始教小埋扫雷.然而,小埋还 ...

  4. P4961 小埋与扫雷【dfs】

    小埋总是在家中打游戏,一天,她突然想玩Windows自带的扫雷,在一旁的哥哥看见了,想起了自己小时候信息课在机房玩扫雷的日子,便兴致勃勃地开始教小埋扫雷.然而,小埋还是不明白 3bv(Bechtel' ...

  5. luogu P4961 小埋与扫雷

    题目背景 小埋总是在家中打游戏,一天,她突然想玩Windows自带的扫雷,在一旁的哥哥看见了,想起了自己小时候信息课在机房玩扫雷的日子,便兴致勃勃地开始教小埋扫雷.然而,小埋还是不明白 每局将所有非雷 ...

  6. 洛谷 P4430 小猴打架

    洛谷 P4430 小猴打架 题目描述 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过N-1次打 ...

  7. 信息学奥赛一本通 1970:【15NOIP普及组】扫雷游戏 | OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 | 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏

    [题目链接] ybt 1970:[15NOIP普及组]扫雷游戏 OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏 [题目考点] 1 ...

  8. 2017提高组D1T1 洛谷P3951 小凯的疑惑

    洛谷P3951 小凯的疑惑 原题 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想 ...

  9. 洛谷 P2186 小Z的栈函数

    洛谷 P2186 小Z的栈函数 题目 题目描述 小Z最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下11个操作: NUM X:栈顶放入X. POP:抛弃栈顶元素. I ...

最新文章

  1. python函数定义中参数列表里的参数是_详解Python函数中参数带星号是什么意思
  2. JAVA入门到精通-网络编程补充和QQ案例
  3. python打开文件并读取2进制_在Python中,哪些文件可以读取为文本,哪些文件可以读取为二进制?...
  4. 中国石油计算机第二次在线作业,中国石油大学(北京)计算机应用基础第二次在线作业1教程.docx...
  5. poj3254 Corn Fields
  6. 怎么运行aws的示例程序_使Spring Boot应用程序在AWS上无服务器运行
  7. 4K视频直播与点播系统的搭建与体验
  8. 史上最全的键盘快捷键
  9. 【java】switch的用法介绍
  10. 利用redis做次数限制的小结
  11. 【读书笔记】目标是什么
  12. 【缓存】缓存更新策略
  13. Elite教程系列(一):快速上手
  14. Go1.19 那些事:国产芯片、内存模型等新特性,你知道多少?
  15. 站长平台之360推送工具
  16. 给电脑重装系统后Win11如何重置记事本?
  17. 手机App开发行业前景怎么样?
  18. 架构师之路(3)---架构师的职责
  19. 创业阶段如何找客户_创业者如何找客户群
  20. 停车收费系统服务器,无人值守停车场自动收费 车牌识别微信支付系统介绍

热门文章

  1. (三)InfluxDB集群解决方案 Influx Proxy Docker搭建
  2. 基于Tensorflow的卷积神经网络模型实现水果分类识别(实践案例)
  3. 今天,我们算一算数据中心停机的账
  4. 【leetcode】二维子矩阵的和
  5. 力扣--初级算法-1
  6. 12步解N-S方程之第五步(1)
  7. Ajax: A New Approach to Web Applications
  8. Adobe 官方公布的 RTMP 规范+未公布的部分
  9. 海康威视2023届超新星实习生招聘
  10. [Excel常用函数] var var.p var.s函数