L2-048 寻宝图

题目描述

给定一幅地图,其中有水域,有陆地。被水域完全环绕的陆地是岛屿。有些岛屿上埋藏有宝藏,这些有宝藏的点也被标记出来了。本题就请你统计一下,给定的地图上一共有多少岛屿,其中有多少是有宝藏的岛屿。

输入格式

输入第一行给出 2 2 2个正整数 N N N 和 M M M ( 1 < N × M ≤ 1 e 5 ) (1<N×M≤1e5 ) (1<N×M≤1e5),是地图的尺寸,表示地图由 N N N 行 M M M 列格子构成。随后 N N N 行,每行给出 M M M 位个位数,其中 0 0 0 表示水域, 1 1 1 表示陆地,2-9 表示宝藏。
注意:两个格子共享一条边时,才是“相邻”的。宝藏都埋在陆地上。默认地图外围全是水域。

输出格式

在一行中输出 2 个整数,分别是岛屿的总数量和有宝藏的岛屿的数量。

输入样例

10 11
01000000151
11000000111
00110000811
00110100010
00000000000
00000111000
00114111000
00110010000
00019000010
00120000001

输出样例

7 2

AC代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
vector<int>f[N],st[N];
int cnt,sum;
bool flag;
int n,m;
int dx[] = {-1,0,1,0},dy[] = {0,1,0,-1};
void dfs(int x,int y)
{st[x][y] = true;if(f[x][y] > 1) flag = true;for(int i = 0;i < 4;i++){int xx = x + dx[i],yy = y + dy[i];if(xx >= 1 && xx <= n&&yy >= 1&&yy <= m&&f[xx][yy]&&!st[xx][yy]){if(f[xx][yy] > 1) flag = true;dfs(xx,yy);}}
}
int main()
{cin>>n>>m;for(int i = 1;i <= n;i++){f[i].push_back(0);st[i].push_back(0);for(int j = 1;j <= m;j++){char c;cin>>c;f[i].push_back(c-'0');st[i].push_back(0);}}for(int i = 1;i <= n;i++)for(int j = 1;j <= m;j++){if(f[i][j] && !st[i][j]){flag = false;sum++;dfs(i,j);if(flag) cnt++;}}cout<<sum<<" "<<cnt;return 0;
}

这里需要用vector来存,n*m <= 1e5,二维数组只能开到1e4。
本来想着数据可能很弱,打算直接用二维数组卡过去(/≧▽≦)/,结果被卡了一个点(24分)/(ㄒoㄒ)/~~。
回到这道题,就是一个连通块问题,写个dfs或者bfs就行了,所以这题关键是要想到用vector。

PTA L2-048 寻宝图相关推荐

  1. PTA 校选拔 7-10 宇航员的寻宝图(BFS)

    [题目描述] 宇航员为了能够到达宇宙飞船发射场,必须拥有足够的晶体,以获得能量.但是他们获得晶体并不容易,晶体被隐藏在某个地方.为了帮助宇航员得到晶体,现在有一张藏宝图,宇航员可以根据藏宝图寻找晶体. ...

  2. 网络寻宝图 v1.0 官方

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  3. PTA L2 题目合集

    L2-001 紧急救援 (25 分) 题解链接 L2-002 链表去重 (25 分) #include<bits/stdc++.h> #define PIS pair <int, s ...

  4. 2023GPLT正赛 L2-4 寻宝图

    给定一幅地图,其中有水域,有陆地.被水域完全环绕的陆地是岛屿.有些岛屿上埋藏有宝藏,这些有宝藏的点也被标记出来了.本题就请你统计一下,给定的地图上一共有多少岛屿,其中有多少是有宝藏的岛屿. 输入格式: ...

  5. L2-048 寻宝图

    L2-048 寻宝图 分数 25 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 给定一幅地图,其中有水域,有陆地.被水域完全环绕的陆地是岛屿.有些岛屿上埋藏有宝藏,这些有宝藏的点也被标记出来了. ...

  6. L2-048 寻宝图(25分)

    题目描述 给定一幅地图,其中有水域,有陆地.被水域完全环绕的陆地是岛屿.有些岛屿上埋藏有宝藏,这些有宝藏的点也被标记出来了.本题就请你统计一下,给定的地图上一共有多少岛屿,其中有多少是有宝藏的岛屿. ...

  7. 【2023团体程序设计天梯赛CCCC】GPLT2023,L1~L2部分(PTA,L1-089~L1-096,L2-045~L2-048)题解代码复盘

    文章目录 概要 L1-089 最好的文档 5 L1-090 什么是机器学习 5 L1-091 程序员买包子 10 L1-092 进化论 10 L1-093 猜帽子游戏 15 L1-094 剪切粘贴 1 ...

  8. 【项目管理】你理解的项目管理是什么样的?

    导读:不同角色对项目管理的理解不尽相同,在项目实施不同阶段的理解也不尽相同,对于现实中的项目管理会遇到哪些挑战?你对所要管理的项目对象又有怎样的认识?你理解的项目管理还仅仅停留在软件功能开发吗?项目管 ...

  9. 下周开幕,给深圳的电子工程师准备的展会!

    我和电子圈老江认识很久了,应该是2012年,小龙第一次参加电子圈年会,那年他年会中奖的奖品送给我.后来,我也加入了电子圈的QQ群,早些年的时候,大家都喜欢在QQ群聊天,后来才慢慢转到微信群. 老江是在 ...

最新文章

  1. HTTP访问控制(CORS)
  2. 人工智能及其应用(第5版).蔡自兴-1章课后习题。【暂时无答案】
  3. 推进五通一平:手淘技术核心三大容器 五大方案首次整体亮相 百川开放全面升级...
  4. PHP怎么输入表达式,PHP: 表达式 - Manual
  5. IP地址、子网掩码、网关、路由器等知识积累
  6. jdk中的设计模式_JDK中的设计模式
  7. 天龙2 场景地图人物 方向箭头 方法
  8. Git正确的协作方式(很简单)
  9. java设计模式----代理模式
  10. Adobe Premiere(pr)2021 安装教程【64位】
  11. 用Global Mapper软件批处理将dwg转GeoPdf
  12. BinarySerializer
  13. 金山毒霸捆绑安装软件被起诉,辩称属于行业惯例
  14. html---表单实例代码
  15. 台式计算机刚做完系统就蓝屏,联想台式win10重装系统出现蓝屏,一招解决系统蓝屏问题...
  16. VSCode配置Python教程
  17. HighNewTech:元宇宙(metaverse)的简介(多角度理解与探讨)、发展历史、现状与未来
  18. PHP AES加密解密
  19. 2022国赛数学建模思路 - 案例:集成算法AdaBoost
  20. 摄像头 - 对焦算法实现总结

热门文章

  1. 紫杉醇人血清白蛋白纳米粒PTX-HSA|阿霉素卵清白蛋白纳米粒DOX-OVA|顺铂小鼠血清白蛋白纳米粒CDDP-MSA(试剂)
  2. Django(十二)模型表关系的实现
  3. 微信开发 没有认证过的服务号怎么办?微信提供了测试号(开通了认证过的服务号的功能)
  4. 华为设备路由器直连路由器配置
  5. 什么是spring框架?spring框架的好处?
  6. win11 右键菜单恢复成win10样式(亲测有效)
  7. ndk 的emac_德州仪器的EMAC外设开发包,配合NDK使用,应在CCS4.2版本以上使用
  8. LWIP协议栈[I/drv.emac] RxCpltCallback err = -3错误解决办法
  9. ChatGPT 角色扮演调教文案收集
  10. [InnoDB] #CORRUPT LOG RECORD FOUND#[MySQL InnoDB表空损坏,数据库无法启动]#