zoj 1649 Rescue

“Rescue(营救),ZOJ1649”的一种解法和疑惑 本文给出了“Rescue(营救),ZOJ1649”的一种解法,使用的是BFS思想。同时也提出了一些自己的疑惑,希望得到高人点拨。 阅读详情
题目链接

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=98233#problem/A

题目大意:

Angle 的朋友想去营救Angle,其任务是到Angle的位置,Angle 的朋友向上,下,左,右移动一步用时1个单位时间,杀死警卫需要用1个时间。计算Angle的朋友营救Angle至少需要多长的时间。
“a” 代表Angle的位置。
“.”代表道路。
“r”代表Angle的朋友。
“#”代表墙。
“x”代表警卫

大体思路:

简单的bfs,与之前直接用bool vis[N][M] 不同,这次因为可能出现花费时间为1的点,也可能会出现花费时间为2的点,所以用一个time[N][M]数组作为标记,当time[cury][curx] (当前位置的时间)大于cost(当前位置需要花费的时间)与上一个位置的时间时,表明time[cury][curx]当前位置的时间可以更新。如果小于,则代表不需要要更新,不用将该点加入到队列中。

代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
#define MAX 100000
int N, M;
char map[205][205];
int Time[205][205];
int x[] = {-1,1,0,0};
int y[] = {0,0,-1,1};
int ax, ay, rx, ry;
void BFS(int ry,int rx)
{
    queue<int> qx;
    queue<int> qy;
    qx.push(rx);
    qy.push(ry);
    Time[ry][rx] = 0;
    while (!qx.empty() && !qy.empty())
    {
        int x1 = qx.front();
        int y1 = qy.front();
        qx.pop();
        qy.pop();
        for (int i = 0; i < 4; i++)
        {
            int x2 = x1 + x[i];
            int y2 = y1 + y[i];
            int cost=0;
            if (x2 >= 0 && x2 < M && y2 >= 0 && y2 < N && map[y2][x2]!='#')
            {
                if (map[y2][x2] == 'a')
                {
                    cost = 1;
                }
                if (map[y2][x2] == '.')
                {
                    cost = 1;
                }
                else if (map[y2][x2] == 'x')
                {
                    cost = 2;
                }
                if (Time[y2][x2]>cost + Time[y1][x1])
                {
                    Time[y2][x2] = cost + Time[y1][x1];
                    qx.push(x2);
                    qy.push(y2);
                }
            }
        }
    }
}
int main()
{
    while (scanf("%d%d", &N, &M) != EOF)
    {
        memset(map,0,sizeof(map));
        for (int i = 0; i < N; i++)
        {
            for (int j = 0; j < M; j++)
            {
                Time[i][j] = MAX;
            }
        }
        for (int i = 0; i < N; i++)
        {
            for (int j = 0; j < M; j++)
            {
                cin >> map[i][j];
                if (map[i][j] == 'a')
                {
                    ax = j;
                    ay = i;
                }
                if (map[i][j] == 'r')
                {
                    rx = j;
                    ry = i;
                }
            }
        }
        BFS(ry,rx);
        if (Time[ay][ax] == MAX)
        {

           cout << "Poor ANGEL has to stay in the prison all his life." << endl;
        }
        else
        {
            printf("%d\n", Time[ay][ax]);
        }
    }
    return 0;
}
ZOJ - 1649:Rescue ZOJ - 1649:Rescue 来源: 标签: 参考资料: 相似题目: 题目 Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M &amp;lt;= 200) matrix. There ... 阅读详情

相关推荐

高通camera:PDAF的配置与测试

确认相关log日志都已经打开了之后,判断是在3A算法中没有应用到PDAF,可能是之前在调试AF效果的时候关闭了PDAF,打开效果文件对应的文件夹,在\kamorta_lce_S5K3P9\Scenario.Default\XML\STATS。在log中搜索af_pdaf_proc_pd_single,这个函数是pdaf算法中的,源码被封装了,这里看不到,因此只能通过log打印出来的参数来分析pd是否正确,主要参数有pd ,defocus,confidence。PDAF的配置与测试。

arvin_xiong的博客 2486

ZOJ 1649 - Rescue BFS/优先队列

在HDOJ上提交通过以后,再在zoj上提交,结果得到了无数个WA,后来发现有一种情况我并没有考虑到  有几个关键的地方需要注意: 1. Angel的朋友不只有一个,可能有多个 2. guard的存在可能会破坏广度优先树 解决办法: BFS的做法:必须要保存guard与可行点‘.’的插入同步,因为guard的costTime不同,应该先不改变其坐标,costTi

个人技术博客 1278

人工智能训练师技能等级认定四级技能考核试卷-样题1

本文为人工智能训练师四级技能考核试卷,包含六个实操考核项目,总分100分,考试时间150分钟。试卷涵盖数据处理、模型训练准备及系统维护等核心技能:1)垃圾分类数据集规范与处理(30分),要求评估数据格式并编写Python处理代码;2)学生成绩数据集分析(20分),涉及数据预处理、可视化及相关性分析;3)数据标注审核(10分),重点审核标注准确性;4)智能数据服务系统维护与优化(40分),包括安全帽数据集的项目创建、数据处理及平台协作。考核强调Python编程、数据处理平台操作及AI工作流程的实践能力。

weixin_42221934的博客 440

zoj1649(优先队列)

Rescue Time Limit: 2 Seconds      Memory Limit: 65536 KB Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M Angel's friends want to save

JustDo的专栏 1111

OpenMV识别颜色源码

【代码】OpenMV识别颜色源码。

dxt258013的博客 402

从FP16到FP8:我是如何让Stable Diffusion 3.5提速40%而不丢画质的

本文分享了StableDiffusion模型优化的实战经验。通过FP8精度转换、分层处理敏感模块,实现显存占用降低35%、推理速度提升40%。文章详细介绍了提升画质的五大技巧、本地/云端/移动端部署方案,以及二次元模型定制等垂直领域应用。同时总结了硬件兼容性、数据质量等七大常见陷阱,并强调持续监控和伦理考量。作者指出未来应关注MoE架构、注意力机制优化等方向,认为技术优化是持续追求性能与质量平衡的过程。

达则兼济天下 1186

ZOJ-1649 Rescue---BFS+优先队列

题目链接: https://vjudge.net/problem/ZOJ-1649 题目大意: 天使的朋友要去救天使,a是天使,r 是朋友,x是卫兵。每走一步需要时间1,打倒卫兵需要另外的时间1,问救到天使所用的最少时间。注意存在救不到的情况。 思路: BFS搜索,由于打倒卫兵时间为2,所以用BFS+优先队列做,每次出队时间最少的拓展,每个格子只走一次才是最优解 1 #inclu...

weixin_34037977的博客 216

Qt Quick/QML入门到精通_专栏demo对应文章目录(目前50个左右demo/长期更新)

自定义图标下拉列表框的效果如下所示:自定义三态按钮的效果如下所示:传送门:53.qt quick-自定义三态按钮、自定义图标下拉列表框_诺谦的博客-优快云博客传送门:59.qt quick-qml调色板(颜色取色器)实现、自定义QQuickStyle样式_诺谦的博客-优快云博客63.qt quick-QML侧边滑动栏(不需要任何图片资源,支持自定义左右方向和大小)_诺谦的博客-优快云博客_qt实现好看侧边栏。...

抵抗时间扭曲,坚持做一件有意义的事 2万+

ZOJ-1649 Rescue BFS (HDU 1242)

看题传送门: ZOJhttp://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1649 HDUhttp://acm.hdu.edu.cn/showproblem.php?pid=1242 题目大意初始位置在r,要求到达a的地点,地图上"."通过需要1s,“x"代表守卫,通过耗时2s,“#”不能走。 BFS的应...

weixin_30553837的博客 171

多源异构数据融合(Kaggle+Google Trends联合分析)

本文详细介绍了如何利用Python实现多源异构数据融合,以Kaggle电商销售数据与Google Trends搜索指数为例,展示了数据清洗、预处理、时间对齐、数据合并、相关性分析、回归建模和可视化全过程。数据预处理与内存优化通过分块加载、数据类型转换和缺失值处理,有效降低了大规模数据在内存中的占用,并确保数据质量。时间对齐与数据融合策略采用重采样与内连接方法对齐不同数据源的时间维度,实现了高质量数据的融合,为后续联合分析奠定基础。模型构建与分析。

闲人编程的博客 1015

【2025最新版】ABAP 开发百科全书专栏文章目录(上)

本文汇总了一系列SAP ABAP技术文章,内容涵盖实用技巧合集、函数式编程实践(如Currying、reduce应用)、设计模式实现(如Visitor、Singleton)、动态代理与Mock技术、性能优化方案(如Lazy Loading)、日期处理与内存管理,以及ABAP与JavaScript的编程范式对比。还涉及CDS视图、Fiori字段追踪、单元测试优化等实战经验,深入剖析了ABAP底层机制(如Internal Session、Function Module实现原理),并提供了多种反模式改进方案。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2464

zoj1649 Rescue

本题是多个朋友 "r" 去牢房解救天使 "a" 的故事,"#"是墙,"."是路,路的话走一格需要一步的时间,"x"是守卫,需要先杀死守卫再走过去,耗费两步的时间,问哪一个朋友能在最少步数把天使救出来。 本来很天真,用DFS写了一个,果断TLE了。 后来用BFS写,并且写的时候有一个取巧的地方,就是让天使去寻找朋友,而不是让朋友寻找天使,大概思路是每次把最少步数的节点赋给 节点 t ,然后判断该

名场聚散多高富,沧海浮沉一屌丝 557

基于STM32、HAL库的WF162A 11BA T&R气压传感器 驱动程序设计

/ 转换为7位地址。* @param temperature: 存储读取到的温度值(°C)* @param temperature: 存储读取到的温度值(°C)* @param pressure: 存储读取到的压力值(bar)* @param pressure: 存储读取到的压力值(bar)* @param range: 压力范围(bar)

corlin6688的博客 361

ZOJ-1649 Rescue

Rescue Time Limit: 2 Seconds      Memory Limit: 65536 KB Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M Angel's friends want to save

U-M-R的博客 518

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ZOJ:1649 Rescue

发现自己对BFS理解还是很肤浅。   BFS可以来求最优解,尤其是像步数最少的这种。这个题虽然不是,但是可以特殊处理一下。 在BFS搜索过程中,到达(x,y)时如果所花费的时间比之前走到此处所花费时间要少,就把该点(x,y)放入队列。 注意一下,这个题不能一到达目的点就退出BFS,因为这是无法保证得到的结果是花费的最少时间,而第一次到达仅仅是步数最少。必须等到BFS过程结束即队列为空才可以

Fighting 946

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ZOJ 1649 Rescue

原题传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1649   Rescue     Time Limit: 2 Seconds      Memory Limit: 65536 KB     Angel was caught by the MOLIGPY! He was put in ...

u014663203的专栏 198

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ACM ZOJ 1649 (Rescue)

题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1649 思路一 宽度优先搜索,用优先队列实现,这个应该很容易想到。 思路二 转换成最短路问题,先用一个矩阵存储matrix输入的字符,然后遍历矩阵,找到两个相邻的点:如果两个点中有#,则距离为INF;如果有且仅有1个x,则距离为1.5;如果有两个x,则距离为

陈青杨 1036

zoj1649Rescue

RescueTime Limit: 1 Second      Memory Limit: 32768 KB Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M Angels friends want to save

独行闹市无人问,青灯剑影响素琴 644

ZOJ(1649)Rescue

#include <iostream> #include <stdio.h> #include <string> #include <string.h> #include <algorithm> #include <stdlib.h> #include <math.h> #include...

158

ZOJ 1649 Rescue

Rescue Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Submit Status Description Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison i

Puya的博客 438

ZOJ 1649.Rescue

需要在监狱里营救出天使,监狱里有若干个狱卒,干掉狱卒需要消耗1回合。特别注意营救者可能不止一个。 因为干掉狱卒需要多消耗1回合,所以用简单的队列出来的不一定就是最优结果,所以要用到优先队列。 BFS与优先队列的应用。 #include #include #include using namespace std; int **Prison; int n,m; int move[4][2] =

That 994
上一篇: PAT1018 Public Bike Management
下一篇: HDU 5012 Dice
_IanXiao
博客等级 码龄12年 84粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值