3825. 逃离大森林
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. 逃离大森林相关推荐
- CF_329_B----AcWing_3825_逃离大森林(BFS究极模板)
原题链接:https://www.acwing.com/problem/content/3828/ 你是一个宝可梦饲养员,你正在进行你的冒险之旅. 当前,你的目标是逃离飞鸟森林. 飞鸟森林可以表示为一 ...
- 「ZJOI2016」大森林 解题报告
「ZJOI2016」大森林 神仙题... 很显然线段树搞不了 考虑离线操作 我们只搞一颗树,从位置1一直往后移动,然后维护它的形态试试 显然操作0,1都可以拆成差分的形式,就是加入和删除 因为保证了操 ...
- bzoj 4573: [Zjoi2016]大森林
Description 小Y家里有一个大森林,里面有n棵树,编号从1到n.一开始这些树都只是树苗,只有一个节点,标号为1.这些树 都有一个特殊的节点,我们称之为生长节点,这些节点有生长出子节点的能力. ...
- BZOJ4573:[ZJOI2016]大森林——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=4573 https://www.luogu.org/problemnew/show/P3348#sub ...
- [ZJOI2016]大森林
Description: 小Y家里有一个大森林,里面有n棵树,编号从1到n 0 l r 表示将第 l 棵树到第 r 棵树的生长节点下面长出一个子节点,子节点的标号为上一个 0 号操作叶子标号加 1(例 ...
- [ZJOI2016]大森林(LCT)
题目描述 小Y家里有一个大森林,里面有n棵树,编号从1到n.一开始这些树都只是树苗,只有一个节点,标号为1.这些树都有一个特殊的节点,我们称之为生长节点,这些节点有生长出子节点的能力. 小Y掌握了一种 ...
- [BZOJ4573][[Zjoi2016]大森林][LCT建虚点]
[BZOJ4573][[Zjoi2016]大森林][LCT建虚点] 题意懒得写了.... 思路: 建LCT的时候我们可以引入虚点.对于所有的1操作,新建一个没有权值的虚点,然后对于0操作,可以把新建的 ...
- bzoj 4573 大森林
bzoj 4573 大森林 由于树上路径是唯一的,查询合法的两个点间路径长度显然与其他加点操作无关,所以可以离线处理,将所有的查询放在加点后. 这样我们可以对每棵树都在上颗树的基础上处理好形态后,处理 ...
- LeetCode1036. 逃离大迷宫(BFS)
1036. 逃离大迷宫 在一个 106 x 106 的网格中,每个网格上方格的坐标为 (x, y) . 现在从源方格 source = [sx, sy] 开始出发,意图赶往目标方格 target = ...
最新文章
- pytest 9 pytest-datadir读取文件信息
- bat小工具_小程序反编译工具在windows系统下的调用脚本
- 计算机网络双语名词,计算机网络中英文名词对照
- AI:2020年6月23日北京智源大会演讲分享之AI交通专题论坛——11:05-11:35杜博文教授《基于广义时空数据挖掘的交通复杂行为认知-从研究到工业》
- NewRandomAccessFile failed to Create/Open问题解决
- JavaScript 验证API
- Fedora 11-Alpha试用手记
- spicy命令_Spicy Spring:动态创建自己的BeanDefinition
- 华为鸿蒙mota30手机多少钱,华为Mate30系列基本确认:麒麟985、鸿蒙系统、5G,价格满意!...
- 转:一个较完整的关键字过滤解决方案
- [APEC中小企业峰会2009上]对话:经济适用男 vs 超级豪华男
- Bootstrap 中 表单和图片(二)
- 因为M.2 SSD,不得不装了WINDOWS10
- linux下录音识别成文字软件下载,如何将录音转换成文字,这个方法你需要知道...
- DependsOn注解
- 三年级计算机课标,三年级信息技术教案上册
- 计算机怎么转换中文版,电脑转换中文是哪个键
- 微信公众平台测试号接口配置的一个坑——ngrok的
- Linux大神进阶二十:Mariadb服务管理
- 借助磁盘修理工具解决Boot Camp助理的分区问题
热门文章
- 启动时出现 r8169 0000:02:00.0: firmware: agent loaded rtl_nic/rtl8168e-3.fw into memory
- JVM垃圾回收——G1垃圾收集器
- java-php-python-ssm特困生服务系统计算机毕业设计
- 电子竞技——靠智力取胜的体育项目
- 怎么才算是高级点灯工程师?
- 原型设计(结对第一次)--社团管理系统
- wang zhe rong yao
- 中国石油大学 现代远程教育入学指南
- 【零信任落地案例】吉大正元某大型集团公司零信任实践案例
- openwrt路由器接华为E3372(E8372)网卡实现4G转有线和WIFI