3825. 逃离大森林

题目链接





#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef pair<int, int> PII;
const int N = 1010;
int n, m;
char g[N][N];
int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
int dist[N][N];int bfs() {memset(dist, 0x3f, sizeof(dist));int sx, sy;for (int i = 0; i < n; ++i)for (int j = 0; j < m; ++j)if (g[i][j] == 'E')sx = i, sy = j;queue<PII> q;q.push({sx, sy});dist[sx][sy] = 0;while (q.size()) {auto t = q.front();q.pop();for (int i = 0; i < 4; ++i) {int x = t.x + dx[i], y = t.y + dy[i];if (x >= 0 && x < n && y >= 0 && y < m && g[x][y] != 'T') {if (dist[x][y] > dist[t.x][t.y] + 1) {dist[x][y] = dist[t.x][t.y] + 1;q.push({x, y});}}}}for (int i = 0; i < n; ++i)for (int j = 0; j < m; ++j)if (g[i][j] == 'S')return dist[i][j];return -1;
}int main() {scanf("%d%d", &n, &m);for (int i = 0; i < n; ++i)scanf("%s", g[i]);int t = bfs();int res = 0;for (int i = 0; i < n; ++i) {for (int j = 0; j < m; ++j) {if (g[i][j] > '0' && g[i][j] <= '9' && dist[i][j] <= t)res += g[i][j] - '0';}}printf("%d\n", res);return 0;
}

题解:这里贴一个y总的代码,要想解这道题,要先得出一个结论,就是如果其他饲养员可以和我在路上相遇,那么我和这位饲养员一定能同时在终点相遇(可以想象成我和这位饲养员在路上相遇后一起走到终点),进一步推出结论,如果一个饲养员到达终点的时长小于等于我到达终点的时长,那么我和这位饲养员一定会相遇。得出这个结论就很好解题了,直接找出我到达终点的最短路,同样也要找出其他饲养员到达终点的最短路,计算出时长,认为所有时长小于等于我的时长的饲养员我都能相遇。

3825. 逃离大森林相关推荐

  1. CF_329_B----AcWing_3825_逃离大森林(BFS究极模板)

    原题链接:https://www.acwing.com/problem/content/3828/ 你是一个宝可梦饲养员,你正在进行你的冒险之旅. 当前,你的目标是逃离飞鸟森林. 飞鸟森林可以表示为一 ...

  2. 「ZJOI2016」大森林 解题报告

    「ZJOI2016」大森林 神仙题... 很显然线段树搞不了 考虑离线操作 我们只搞一颗树,从位置1一直往后移动,然后维护它的形态试试 显然操作0,1都可以拆成差分的形式,就是加入和删除 因为保证了操 ...

  3. bzoj 4573: [Zjoi2016]大森林

    Description 小Y家里有一个大森林,里面有n棵树,编号从1到n.一开始这些树都只是树苗,只有一个节点,标号为1.这些树 都有一个特殊的节点,我们称之为生长节点,这些节点有生长出子节点的能力. ...

  4. BZOJ4573:[ZJOI2016]大森林——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=4573 https://www.luogu.org/problemnew/show/P3348#sub ...

  5. [ZJOI2016]大森林

    Description: 小Y家里有一个大森林,里面有n棵树,编号从1到n 0 l r 表示将第 l 棵树到第 r 棵树的生长节点下面长出一个子节点,子节点的标号为上一个 0 号操作叶子标号加 1(例 ...

  6. [ZJOI2016]大森林(LCT)

    题目描述 小Y家里有一个大森林,里面有n棵树,编号从1到n.一开始这些树都只是树苗,只有一个节点,标号为1.这些树都有一个特殊的节点,我们称之为生长节点,这些节点有生长出子节点的能力. 小Y掌握了一种 ...

  7. [BZOJ4573][[Zjoi2016]大森林][LCT建虚点]

    [BZOJ4573][[Zjoi2016]大森林][LCT建虚点] 题意懒得写了.... 思路: 建LCT的时候我们可以引入虚点.对于所有的1操作,新建一个没有权值的虚点,然后对于0操作,可以把新建的 ...

  8. bzoj 4573 大森林

    bzoj 4573 大森林 由于树上路径是唯一的,查询合法的两个点间路径长度显然与其他加点操作无关,所以可以离线处理,将所有的查询放在加点后. 这样我们可以对每棵树都在上颗树的基础上处理好形态后,处理 ...

  9. LeetCode1036. 逃离大迷宫(BFS)

    1036. 逃离大迷宫 在一个 106 x 106 的网格中,每个网格上方格的坐标为 (x, y) . 现在从源方格 source = [sx, sy] 开始出发,意图赶往目标方格 target = ...

最新文章

  1. pytest 9 pytest-datadir读取文件信息
  2. bat小工具_小程序反编译工具在windows系统下的调用脚本
  3. 计算机网络双语名词,计算机网络中英文名词对照
  4. AI:2020年6月23日北京智源大会演讲分享之AI交通专题论坛——11:05-11:35杜博文教授《基于广义时空数据挖掘的交通复杂行为认知-从研究到工业》
  5. NewRandomAccessFile failed to Create/Open问题解决
  6. JavaScript 验证API
  7. Fedora 11-Alpha试用手记
  8. spicy命令_Spicy Spring:动态创建自己的BeanDefinition
  9. 华为鸿蒙mota30手机多少钱,华为Mate30系列基本确认:麒麟985、鸿蒙系统、5G,价格满意!...
  10. 转:一个较完整的关键字过滤解决方案
  11. [APEC中小企业峰会2009上]对话:经济适用男 vs 超级豪华男
  12. Bootstrap 中 表单和图片(二)
  13. 因为M.2 SSD,不得不装了WINDOWS10
  14. linux下录音识别成文字软件下载,如何将录音转换成文字,这个方法你需要知道...
  15. DependsOn注解
  16. 三年级计算机课标,三年级信息技术教案上册
  17. 计算机怎么转换中文版,电脑转换中文是哪个键
  18. 微信公众平台测试号接口配置的一个坑——ngrok的
  19. Linux大神进阶二十:Mariadb服务管理
  20. 借助磁盘修理工具解决Boot Camp助理的分区问题

热门文章

  1. 启动时出现 r8169 0000:02:00.0: firmware: agent loaded rtl_nic/rtl8168e-3.fw into memory
  2. JVM垃圾回收——G1垃圾收集器
  3. java-php-python-ssm特困生服务系统计算机毕业设计
  4. 电子竞技——靠智力取胜的体育项目
  5. 怎么才算是高级点灯工程师?
  6. 原型设计(结对第一次)--社团管理系统
  7. wang zhe rong yao
  8. 中国石油大学 现代远程教育入学指南
  9. 【零信任落地案例】吉大正元某大型集团公司零信任实践案例
  10. openwrt路由器接华为E3372(E8372)网卡实现4G转有线和WIFI