Escape (HDU - 3533,BFS + 模拟)

4.UE数字人工程运行逻辑及程序逻辑 UE数字人工程运行逻辑及程序逻辑 阅读详情

一.题目链接:

HDU-3533

二.题目大意:

第一行 4 个整数 m,n,k,d.

m × n 是地图大小,有 k 个炮塔.

d 是初始生命值,每秒消耗 1 点生命值.

之后 k 行.

每行有 ch,t,v,x,y.

ch = {'N', 'S', 'W', 'E'}

t 为该炮塔发射炮弹的间隔时间.

v 为该炮台发射子弹的速度.

x,y 为该炮台的坐标.

A 的初始位置在 (0, 0),出口在 (m, n).

若 A 生命值为 0 或 被子弹打中,则 A 死亡.

ps:炮台可挡住其他子弹.

三.分析:

直接 BFS + 模拟...

详见代码.

四.代码实现:

#include <set>
#include <map>
#include <ctime>
#include <queue>
#include <cmath>
#include <stack>
#include <vector>
#include <cstdio>
#include <sstream>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define eps 1e-6
#define pi acos(-1.0)
#define ll long long int
using namespace std;

const int M = (int)1e2;
const int inf = 0x3f3f3f;

struct node1
{
    char ch;
    int t;
    int v;
} castle[M + 5][M + 5];

struct node2
{
    int x;
    int y;
    int step;
};

bool vis[M * 10 + 5][M + 5][M + 5];

int Move[5][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}, {0, 0}};

int bfs(int m, int n, int d)
{
    struct node2 p, t;
    p.x = p.y = p.step = 0;
    vis[0][0][0] = 1;
    queue <node2> q;
    q.push(p);
    while(!q.empty())
    {
        p = q.front();
        q.pop();
        if(p.x == m && p.y == n)
            return p.step;
        for(int i = 0; i < 5; ++i)
        {
            t = p;
            t.x += Move[i][0];
            t.y += Move[i][1];
            t.step++;
            if(t.x < 0 || t.x > m || t.y < 0 || t.y > n)
                continue;
            if(!castle[t.x][t.y].t && !vis[t.step][t.x][t.y] && t.step <= d)
            {
                bool flag = 1;
                for(int j = t.x - 1; j >= 0; --j)///查找上方的炮台
                {
                    if(castle[j][t.y].v && castle[j][t.y].ch == 'S')///炮台在上方 且 向下方发射子弹
                    {
                        int dis = t.x - j;
                        if(dis % castle[j][t.y].v)///若所在位置无法被子弹速度整除
                            break;
                        int times = t.step - dis / castle[j][t.y].v;///已用时间 - 子弹从出点到达此点的时间
                        if(times % castle[j][t.y].t == 0)
                        {
                            flag = 0;
                            break;
                        }
                    }
                    else if(castle[j][t.y].v && castle[j][t.y].ch != 'S')///帮 A 挡住子弹
                        break;
                }
                if(!flag)
                    continue;
                for(int j = t.x + 1; j <= m; ++j)
                {
                    if(castle[j][t.y].v && castle[j][t.y].ch == 'N')
                    {
                        int dis = j - t.x;
                        if(dis % castle[j][t.y].v)
                            break;
                        int times = t.step - dis / castle[j][t.y].v;
                        if(times % castle[j][t.y].t == 0)
                        {
                            flag = 0;
                            break;
                        }
                    }
                    else if(castle[j][t.y].v && castle[j][t.y].ch != 'N')
                        break;
                }
                if(!flag)
                    continue;
                for(int j = t.y - 1; j >= 0; --j)
                {
                    if(castle[t.x][j].v && castle[t.x][j].ch == 'E')
                    {
                        int dis = t.y - j;
                        if(dis % castle[t.x][j].v)
                            break;
                        int times = t.step - dis / castle[t.x][j].v;
                        if(times % castle[t.x][j].t == 0)
                        {
                            flag = 0;
                            break;
                        }
                    }
                    else if(castle[t.x][j].v && castle[t.x][j].ch != 'E')
                        break;
                }
                if(!flag)
                    continue;
                for(int j = t.y + 1; j <= n; ++j)
                {
                    if(castle[t.x][j].v && castle[t.x][j].ch == 'W')
                    {
                        int dis = j - t.y;
                        if(dis % castle[t.x][j].v)
                            break;
                        int times = t.step - dis / castle[t.x][j].v;
                        if(times % castle[t.x][j].t == 0)
                        {
                            flag = 0;
                            break;
                        }
                    }
                    else if(castle[t.x][j].v && castle[t.x][j].ch != 'W')
                        break;
                }
                if(!flag)
                    continue;
                vis[t.step][t.x][t.y] = 1;
                q.push(t);
            }
        }
    }
    return -1;
}

void init(int m, int n)
{
    for(int i = 0; i <= M * 10; ++i)
    {
        for(int j = 0; j <= m; ++j)
        {
            for(int k = 0; k <= n; ++k)
            {
                vis[i][j][k] = 0;
                castle[j][k].t = castle[j][k].v = 0;
            }
        }
    }
}

int main()
{
    int m, n, k, d;
    while(~scanf("%d %d %d %d", &m, &n, &k, &d))
    {
        init(m, n);
        char ch;
        int t, v, x, y;
        for(int i = 0; i < k; ++i)
        {
            getchar();
            scanf("%c %d %d %d %d", &ch, &t, &v, &x, &y);
            castle[x][y].ch = ch;
            castle[x][y].t = t;
            castle[x][y].v = v;
        }
        int ans = bfs(m, n, d);
        if(~ans)
            printf("%d\n", ans);
        else
            printf("Bad luck!\n");
    }
    return 0;
}

 

5分钟搞定kkFileView 4.4.0 Docker部署:小白也能上手的完整配置流程 本文提供了一份针对kkFileView 4.4.0版本的Docker部署完整指南。通过使用预构建的Docker镜像,即使是新手也能在5分钟内完成文件预览服务的搭建,涵盖从环境准备、镜像拉取、容器启动到服务验证的全流程,并分享了进阶配置与生产环境优化建议。 阅读详情

相关推荐

U-Net图像分割实战:从论文解析到PyTorch代码实现

本文深入解析了U-Net图像分割模型的经典架构与核心思想,并提供了从零开始的PyTorch代码实现教程。通过详细拆解编码器-解码器结构、跳跃连接等关键组件,手把手指导读者构建完整的U-Net网络,涵盖数据准备、模型训练、推理部署全流程,是掌握图像分割实战技能的实用指南。

fire9的博客 341

HDU 3533

H #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;string.h&amp;gt; #include &amp;lt;queue&amp;gt; #include &amp;lt;algorithm&amp;gt; using namespace std; #define ads(x) (x&amp;lt;0?-x:x) int n, m, k, life; int to[5][2]

weixin_44012186的博客 329

手把手拆解DGX GB200 NVL72:1个机柜如何塞进72块GPU?详解NVLink Switch铜缆背板设计

本文深度解析英伟达DGX GB200 NVL72系统如何通过NVLink Switch铜缆背板设计,在标准42U机柜中集成72块B200 GPU,实现1800GB/s的超高带宽。文章详细介绍了模块化架构、铜缆互连技术、液冷散热方案和高密度供电系统等核心创新,为AI算力需求提供突破性解决方案。

red88的博客 1586

HDU - 3533 Escape 【BFS】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3533 需要注意的点: 1,人不能去有城堡的地方 2,子弹不能穿过城堡,遇到城堡子弹不会继续向前射,即使城堡在途中也不行,比如说子弹从(0, 0) 向 (0, 3)射,如果(0, 1)有城堡,子弹会消失。 3,子弹是从时间 t 开始射击的,不是从0开始。 思路就是人先走,然后遍历每一个城堡的射...

Y390d的博客 218

使用mne包来对脑电数据进行预处理(一)

MNE(MNE-Python)是一个用于处理脑电(EEG)、磁图(MEG)和其他神经科学数据的Python库。它提供了丰富的功能,包括数据加载、预处理、分析和可视化,旨在帮助研究人员和神经科学家更轻松地进行脑电数据的处理和分析。在本文中,我们使用mne来对不同的格式的脑电数据集进行数据读取。

m0_71596228的博客 4305

EMC案例:解决千兆网口RTL8211F EMI问题

摘要:本文分析了Amlogic S812平台OEM项目中RTL8211F-CG千兆网卡EMI辐射超标问题。发现百兆测试时25MHz时钟有3dB余量,但千兆125MHz时钟导致超标。问题根源包括:未关闭PHY芯片悬空CLKOUT引脚、TX/RXCLK端RC位置错误、包地不完整及参考地缺失。解决方案涉及软件关闭无用时钟、优化RC布局、加强包地与打孔、调整共模电感位置,并在HDMI 3.3V加磁珠。关键结论指出千兆网125MHz时钟需严格包地打孔,且RC取值需平衡EMI与通信性能。

电子绿洲的博客 1279

【HDU - 3533】Escape(bfs)

Escape Descriptions: 一个人从(0,0)跑到(n,m),只有k点能量,一秒消耗一点,在图中有k个炮塔,给出炮塔的射击方向c,射击间隔t,子弹速度v,坐标x,y问这个人能不能安全到达终点要求:1.人不能到达炮塔所在的坐标2.炮塔会挡住子弹3.途中遇到子弹是安全的,但是人如果停在这个坐标,而子弹也刚好到这个坐标,人就被射死4.人可以选择停止不动 Input 对于每个测试用例,...

Sky丨Star的博客 141

用Python玩转Iris数据集:从数据加载到可视化分析的完整指南

本文提供了使用Python处理Iris数据集的完整指南,涵盖数据加载、探索性分析、特征工程和可视化呈现等关键步骤。通过Pandas、NumPy、Matplotlib和Seaborn等工具,读者将学习如何从零开始完成一个机器学习项目的数据分析流程,掌握数据科学的核心技能。

j2k3l4的博客 850

HDU3533:Escape(BFS)

Problem Description The students of the HEU are maneuvering for their military training. The red army and the blue army are at war today. The blue army finds that Little A is the spy of the red ar

ACM!荣耀之路! 4462

STC8G1K08A的10位PWM避坑指南:为什么你的占空比调节总失效?(附寄存器操作时序图)

本文深入剖析了STC8G1K08A单片机10位PWM功能中占空比调节失效的核心原因,揭示了数据手册未明确指出的寄存器操作时序陷阱。通过对比错误与正确配置的波形,文章指出关键在于更新占空比高2位前需临时关闭PWM输出,并提供了经过验证的安全操作宏与函数库,帮助开发者彻底解决此问题,实现0%-100%的平滑控制。

yyy34的博客 747

基于DNN、CNN与SVM的串联电弧故障智能检测:从原理到嵌入式部署

在电气安全与工业物联网领域,时间序列分类是处理传感器信号、实现状态监测与故障诊断的核心技术。其原理在于从连续的信号数据中提取有效特征,并利用机器学习模型识别异常模式。这项技术的核心价值在于能够实现设备预测性维护、提升系统安全性并降低运维成本,广泛应用于智能电表、电机健康监测、电力设备保护等场景。本文聚焦于电气安全中的一个具体且危险的隐患——串联电弧故障的检测。针对这一隐蔽性强、传统方法误报率高的问题,项目深入实践了三种主流AI模型:深度神经网络、卷积神经网络和支持向量机。通过对比DNN的通用特征学习能力、C

weixin_31860973的博客 413

HDU-3533-Escape(BFS)

Problem Description The students of the HEU are maneuvering for their military training. The red army and the blue army are at war today. The blue army finds that Little A is the spy of the red ar

青春无悔 1395

Figma做原型设计一篇教会你,全栈软件开发必备技能,前后端岗位锐减找工作的底牌

本文介绍了使用Figma进行前端应用原型设计的方法与优势。Figma作为主流设计工具,能够满足大多数应用系统的原型设计需求,强调系统设计应保持简洁合理。文章详细说明了Figma的基本操作流程,包括创建Frame页面、组件使用、交互设置等核心功能,并指出命名规范的重要性。同时对比了Axure、墨刀等其他设计工具的特点,建议根据具体需求选择合适的平台。最后强调原型设计主要关注交互功能展示,业务逻辑应通过需求文档表述。整体而言,Figma凭借其简洁高效的特点,已成为原型设计的优选工具。

有问题或资源连接有缺失的可以私信公众号新潮看世界获取 460

HDU 3533 Escape(BFS+模拟)两种思路

EscapeTime Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2400    Accepted Submission(s): 693Problem DescriptionThe students of the HEU are maneuv...

Rvelamen的博客 442

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

HDU - 3533 Escape

举个栗子:子弹以每秒3格的速度从(0,3)射向(0,0),同时小A以每秒1格从(0,0)逃往(0,1),这时小A能活下来。对于判重,需要定义vis[x][y][time]表示点(x,y)在time时刻的访问状态,这里需要注意的是这个数组不能开int,只能开bool,虽然效果好像是一样的,但是开int会爆内存,因为int占4byte,而bool只占1byte。一个人从(0,0)跑到(n,m),只有d点能量,一秒消耗一点,在图中有k个炮塔,给出炮塔的射击方向c,射击间隔t,子弹速度v,坐标x,y。

2301_77449683的博客 691

IMSL CNL 7.0.0 (x86-64)Crack

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

HDU 3533 Escape(大逃亡)

HDU 3533 Escape(大逃亡) TimeLimit:20000/10000MS(Java/Others)MemoryLimit:32768/32768K(Java/Others) ProblemDescription - 题目描述   The students of the HEU are maneuvering for th...

291

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

HDU 3533 Escape(BFS)

题意 ​ ​ A从棋盘(0,0)前往(m,n)每回合消耗一点能量,地图上有一些碉堡,碉堡周期性发射子弹,子弹沿直线运动,每回合在棋盘上一点,碉堡可以拦住子弹的运动,子弹互相不影响,A在移动过程中不能和碉堡子弹处于同一点,输出最短到终点时间,无法到达输出“Bad luck!” 思路 ​ ​ 棋盘上最短路,考虑用BFS或者A*,这题BFS足够 ​ ​ 难点在于每走一到一点,要计算在当前时刻该点有无子弹...

IuSpet的博客 387

HDU3533Escape(BFS+预处理)

题目在这:传送门 分析:A要从(0,0)跑到(m,n)处,地图各个地方有炮台会发射子弹,A必须要不中弹而且能量用完之前到达(m,n),可以的话输出需要的时间,不行就输出Bad luck! 思路:求最短路径用BFS,而这题情况条件比较多,先要多子弹可能会出现的位置和时间做一个预处理,就先标记好,在BFS的时候绕开子弹 AC代码: #include&lt;iostream&gt; #include&l...

Stark_industry 244

HDU 3533 BFS

HDU 3533 题意: 一个人从(0,0)跑到(n,m),只有k点能量,一秒消耗一点,在图中有k个炮塔,给出炮塔的射击方向c,射击间隔t,子弹速度v,坐标x,y 问这个人能不能安全到达终点 要求:  1.人不能到达炮塔所在的坐标 2.炮塔会挡住子弹 3.途中遇到子弹是安全的,但是人如果停在这个坐标,而子弹也刚好到这个坐标,人就被射死 4.人可以选择停止不动 思路:其实不难,

小菜鸟。。 283

HDU 3533 Escape 预处理+bfs

传送门:HDU3533 题意: 一个人从(0,0)跑到(n,m),只有k点能量,一秒消耗一点,在图中有k个炮塔,给出炮塔的射击方向c,射击间隔t,子弹速度v,坐标x,y问这个人能不能安全到达终点要求:  1.人不能到达炮塔所在的坐标 2.炮塔会挡住子弹 3.途中遇到子弹是安全的,但是人如果停在这个坐标,而子弹也刚好到这个坐标,人就被射死(即人只会在整数秒死) 4.人可以选择停止不动思路:先把所

WA是一笔财富 402

【HDU 3533】Escape(BFS)

DescriptionThe students of the HEU are maneuvering for their military training. The red army and the blue army are at war today. The blue army finds that Little A is the spy of the red army, so Littl

Ice_Confuse 484

HDU3533 Escape —— BFS / A*算法 + 预处理

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3533 Escape Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1792    Accepted Submis

A man can be destroyed, but not defeated. 587

hdu3533Escape

hdu3533 Escape Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1459    Accepted Submission(s): 407 Problem Description The students o

active2489595970的博客 346

BFS-hdu-3533-Escape

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3533 题目大意: 给一个m*n的矩阵方格,有k门大炮,每门大炮以t为周期向c方向发射炮弹,炮弹速度为v. 求从(0,0)到(m,n)位置最短的时间,中间不能被炮弹打到,时间不能超过d. 解题思路: 预处理好后就是简单的BFS。 先预处理每个点能够被炮弹射击的所有时刻,然后用vis[

cc_again的专栏 1219

HDU 3533 —— Escape

原题:http://acm.hdu.edu.cn/showproblem.php?pid=3533 题意:从(0 0)走到(n m),四个方向或者选择不走,每次走或不走都要消耗一个能量,问最少消耗多少能量,初始能量为d; 有k个炮台,c  t  v  x  y 分别表示炮台发射的方向,每次发射的时间间隔,炮火的速度,炮台的坐标; 有炮台的地方不能走,当某个时刻人和炮火在同一个坐标时就死了,途

0x3f3f3f3f 468
上一篇: Eight II (HDU - 3567,BFS 打表 + 思维)
下一篇: DNA sequence (HDU - 1560,IDA* + 小小思维)
The___Flash
博客等级 码龄8年 79粉丝 223原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值