Maze

题解

DFS/BFS。
这里用的是 D F S DFS DFS。其中有并查集的思想。
题目所求为某个格子最多能到达的格子的数量,那么如果格子A可以到达格子B,则格子B必定能到格子A
也就是说,某一块的格子是可以互达的。
我们利用 D F S DFS DFS,遍历格子,标记格子A所能到达的所有格子为某个字符,如'1',设A能到达k个格子,那么这k个格子最多也只能到达k个格子。
同理,遍历并标记其它未被标记过的格子,即可得到答案。
也可以利用并查集求解,思想一样,将相互可达的格子放在一个集合中,集合中元素的数量即为最多可达格子数量。

AC代码

 #include <bits/stdc++.h>//#pragma GCC optimize(2)
#define IO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define ull unsigned long long
#define ll long long
#define rep(i, x, y) for(int i=x;i<=y;i++)
#define mms(x, n) memset(x, n, sizeof(x))
#define pre(i, x, y) for(int i = x; i >=y; i--)
#define INF (0x3f3f3f3f)
#define mod (1e9+7)using namespace std;
const int N = 3e3 + 10;
int maze[N][N];
int n, m, q;
int num = 1;
int f[4][2]{{1,  0},{-1, 0},{0,  1},{0,  -1},};
int is[N][N];
int step[N * N];
int vis[N][N];void dfs(int x, int y) {is[x][y] = num;for (auto &i : f) {int xx = x + i[0], yy = y + i[1];if (xx < 0 || xx >= n || yy < 0 || yy >= m) continue;if (maze[xx][yy] == maze[x][y] || is[xx][yy]) continue;dfs(xx, yy);}
}int main() {IO;cin >> n >> m >> q;rep(i, 0, n - 1) {rep(j, 0, m - 1) {char c;cin >> c;maze[i][j] = c == '-' ? -1 : 1;}}rep(i, 0, n - 1) {rep(j, 0, m - 1) {if (!is[i][j]) dfs(i, j),num++;}}rep(i, 0, n - 1) rep(j, 0, m - 1) step[is[i][j]]++;while (q--) {int a, b;cin >> a >> b;cout << step[is[a - 1][b - 1]] << endl;}return 0;
}

哈尔滨理工大学软件与微电子学院程序设计竞赛(同步赛) H相关推荐

  1. 哈尔滨理工大学软件与微电子学院程序设计竞赛(新生赛)

    关于哈尔滨理工大学软件与微电子学院程序设计竞赛(新生赛) 下午五点四十开始的比赛,五点二十我才刚刚抽完血,实在是有点难顶,再加上还没有吃饭,刚开始做题的时候还真是有点发懵,胳膊也很难受. 这应该是我第 ...

  2. 哈尔滨理工大学软件与微电子学院程序设计竞赛(新生赛) -补档

    time:2019.11.08 题目较多,所以使用目录. 文章目录 Problem A:[NowCoder54536 小乐乐学编程](https://ac.nowcoder.com/acm/probl ...

  3. 哈尔滨理工大学软件与微电子学院程序设计竞赛 H.Maze

    哈尔滨理工大学软件与微电子学院程序设计竞赛 H.Maze 题目链接 题目描述 多多在一个N行M列的迷宫中,迷宫只由符号 '+' 或 '-' 组成.如果多多在 '+' 上,下一步只能走到上.下.左.右四 ...

  4. 哈尔滨理工大学软件与微电子学院程序设计竞赛(同步赛)B.Min Value

    哈尔滨理工大学软件与微电子学院程序设计竞赛(同步赛)B.Min Value 题目链接 题目描述 有一天,老师告诉多多:绝对值是指一个数在数轴上所对应点到原点的距离. 接下来老师给多多一个由 N 个数组 ...

  5. 哈尔滨理工大学软件与微电子学院程序设计竞赛 题解

    DEF题比较难一些,目前本菜鸡能力有限. 文章目录 A-Race B-Min Value C-Coronavirus G-OXR H-Maze I-Prime J-Compare K-Walk L-D ...

  6. 哈尔滨理工大学软件与微电子学院程序设计竞赛(同步赛)(重现赛)

    比赛地址 A. 思路:模拟 #include<iostream> #include<cstring> #include<cstdio> #include<al ...

  7. 哈尔滨理工大学软件与微电子学院程序设计竞赛——C.Coronavirus【BFS】

    题目传送门 题解 直接BFS跑一遍即可 水题 AC-Code #include <bits/stdc++.h> using namespace std;const int maxn = 1 ...

  8. 哈尔滨理工大学软件与微电子学院程序设计竞赛(19级新生赛)——题解

    注:所有题目不要求多组输入 索引: A. 小乐乐学编程 B. 小乐乐算平均分 C. 小乐乐找最大数 D. 小乐乐是否被叫家长 E. 小乐乐转换成绩 F. 小乐乐算多少人被请家长 G. 小乐乐算最高分 ...

  9. 哈尔滨理工大学软件与微电子学院程序设计竞赛(同步赛) A

    文章目录 Race 题解 代码 模拟时间 模拟距离 Race 题解 模拟. 可以模拟时间增加,也可以模拟距离变化,本质是一样的. 之前看到了公倍数的条件,但是没用到,看了大佬代码之后恍然大悟hhhh ...

最新文章

  1. 电脑解锁后黑屏有鼠标_笔记本电脑开机黑屏只显示鼠标怎么办?
  2. 怎么学python-如何轻松学习Python数据分析
  3. java实现注销登录
  4. Python爬虫实战(5):模拟登录淘宝并获取所有订单
  5. 云消防大数据_消防云大数据app下载-消防云大数据下载v1.1.5 安卓版-西西软件下载...
  6. java数数字及while和do while 的使用,以及程序的调试与验证
  7. Nginx命令与配置详解
  8. mysql自动生成日期序列号_mysql – 在一天内为实体生成唯一的序列号
  9. python项目构建_通过构建4个项目来学习Python网络
  10. Linux串口编程详解
  11. php session有什么用,session有什么作用?
  12. 格力市值3900亿,美的市值6300亿
  13. 余承东:华为P50系列无5G版本,但依然流畅
  14. 深入了解基于容器的红帽PaaS和OpenShift
  15. ccc强制性认证是什么?
  16. 线对 Line pairs度量空间频率
  17. 关于在页面提交后reset按钮就不起作用的问题
  18. 带CAN唤醒能力的TJA1043
  19. Android Studio + Esp32Cam 实现手机APP实时传输监控视频
  20. autoconf 遇到的坑

热门文章

  1. gis与计算机科学的关系,GIS常识 地理信息系统与相关学科的关系
  2. 收入下滑,亏损扩大的人力资源管理公司罗科仕申请纳斯达克IPO上市
  3. maven聚合项目,新建molde,在maven projects中显示灰色
  4. c++ 常见基础知识以及面试常问知识点
  5. android linker 执行流程
  6. 智能语音电话机器人的语音识别是如何实现的?
  7. 《英语阅读教学与思维发展》读书笔记(五)
  8. 105 七夕祭(环形均分纸牌问题、绝对值不等式)
  9. Docker 被禁,有哪些开源产品可以替代
  10. sofia sip开发一 基础知识