HDU - 3533 Escape 【BFS】

深入解析AndroidManifest.xml与device_admin.xml:打造完美DeviceOwner应用配置 本文深入解析了Android企业级开发中DeviceOwner应用的核心配置文件AndroidManifest.xml与device_admin.xml。详细阐述了如何精准声明DeviceAdminReceiver、定义管理策略,并提供了通过ADB命令进行设置与验证的实战指南,帮助开发者构建权限完整、配置正确的设备所有者应用。 阅读详情

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3533

需要注意的点:

1,人不能去有城堡的地方

2,子弹不能穿过城堡,遇到城堡子弹不会继续向前射,即使城堡在途中也不行,比如说子弹从(0, 0) 向 (0, 3)射,如果(0, 1)有城堡,子弹会消失。

3,子弹是从时间 t 开始射击的,不是从0开始。

思路就是人先走,然后遍历每一个城堡的射击时间,如果到了射击时间,就把这个城堡的子弹放入队列里面。然后注意一些限制条件即可。判断子弹是否在射击途中遇到城堡,如果没有就放入队列里面,弹出的子弹记得在那个位置减去一个子弹,表示这个子弹已经离开这个位置了。

#include <iostream>
#include <queue>
#include <cstring>
#include <string>
#include <map>
#include <cstdio>
#include <cmath>
#include <algorithm>

using namespace std;

const int INF = 0x3f3f3f3f;
const int Maxn = 4e5+10;

struct Shot {
    char dir;
    int i, j, v, t;
} shot[105];

struct Node {
    int i, j, step;
};

int N, M, gun, ener, dir[4][2] = { {1, 0}, {-1, 0},
{0, 1}, {0, -1} }, G[105][105];
bool vis[105][105];

void print() {
    for(int i = 0; i <= N; ++i) {
        for(int j = 0; j <= M; ++j)
            cout << G[i][j] << " ";
        cout << endl;
    }
    cout << endl;
}

void bfs() {
    memset(vis, 0, sizeof(vis));
    queue<Node> quP;
    queue<Shot> quS;
    Node Ntmp; Shot Stmp;
    Ntmp.i = 0; Ntmp.j = 0; Ntmp.step = 0;
    quP.push(Ntmp);
    vis[0][0] = true;

    while (!quP.empty()) {
        int cnt = quP.size(), curtime;
        while (cnt--) {
            Ntmp = quP.front(); quP.pop();
            curtime = Ntmp.step+1;

            if(Ntmp.i == N && Ntmp.j == M) {
                printf("%d\n", Ntmp.step); return;
            }

            for(int i = 0; i < 4; ++i) {
                Node now = Ntmp;
                now.i += dir[i][0]; now.j += dir[i][1];
                if(now.i < 0 || now.i > N || now.j < 0 || now.j > M
                   || vis[now.i][now.j] || G[now.i][now.j] == -1 || G[now.i][now.j] > 0) continue;
                now.step++;
                if(now.step > ener) continue;
                vis[now.i][now.j] = true;
                quP.push(now);
            }
            if(Ntmp.step+1 < ener && G[Ntmp.i][Ntmp.j] == 0) {
                Ntmp.step++; quP.push(Ntmp);
            }
        }

        for(int i = 0; i < gun; ++i)
            if(curtime % shot[i].t == 0) quS.push(shot[i]);

        cnt = quS.size();
        while(cnt--) {
            Stmp = quS.front(); quS.pop();
            if(G[Stmp.i][Stmp.j] > 0)
                G[Stmp.i][Stmp.j]--;

            Shot now = Stmp;
            if(now.dir == 'N' && now.i-now.v >= 0) {
                now.i -= now.v;
                bool ok = true;
                for(int i = Stmp.i-1; i >= now.i; --i) if(G[i][now.j] == -1) ok = false;
                if(ok) {
                    G[now.i][now.j]++;
                    quS.push(now);
                }
            }
            now = Stmp;
            if(now.dir == 'S' && now.i+now.v <= N) {
                now.i += now.v;
                bool ok = true;
                for(int i = Stmp.i+1; i <= now.i; ++i) if(G[i][now.j] == -1) ok = false;
                if(ok) {
                    G[now.i][now.j]++;
                    quS.push(now);
                }
            }
            now = Stmp;
            if(now.dir == 'W' && now.j-now.v >= 0) {
                now.j -= now.v;
                bool ok = true;
                for(int j = Stmp.j-1; j >= now.j; --j) if(G[now.i][j] == -1) ok = false;
                if(ok) {
                    G[now.i][now.j]++;
                    quS.push(now);
                }
            }
            now = Stmp;
            if(now.dir == 'E' && now.j+now.v <= M) {
                now.j += now.v;
                bool ok = true;
                for(int j = Stmp.j+1; j <= now.j; ++j) if(G[now.i][j] == -1) ok = false;
                if(ok) {
                    G[now.i][now.j]++;
                    quS.push(now);
                }
            }
        }
       // print();
    }
    printf("Bad luck!\n");
}

int main(void)
{
    while(scanf("%d%d%d%d", &N, &M, &gun, &ener) != EOF) {
        memset(G, 0, sizeof(G));
        for(int i = 0; i < gun; ++i) {
            scanf(" %c%d%d%d%d", &shot[i].dir,
                  &shot[i].t, &shot[i].v, &shot[i].i, &shot[i].j);
            G[shot[i].i][shot[i].j] = -1;
        }
       // print();
        bfs();
    }
	return 0;
}

 

LSTM 双向 Bi-LSTM 阅读详情

相关推荐

Ubuntu安装pytorch3d的最便捷方法【原创】

Ubuntu安装pytorch3d的最便捷方法

qq_54900679的博客 2924

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

MPU6050运动中断唤醒STM32低功耗休眠模式实战

本文详细介绍了如何使用MPU6050运动中断唤醒STM32低功耗休眠模式的实战方案。通过配置MPU6050的运动检测中断作为STM32的唤醒源,实现设备在静止时进入低功耗Stop模式,运动时快速唤醒,大幅延长电池续航。涵盖硬件连接、软件配置、参数调试等关键步骤,并提供实际应用案例和优化建议。

rgv23456789的博客 703

Escape (HDU - 3533,BFS + 模拟)

一.题目链接: 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 的初始位...

The___Flash的博客 318

STM32 伺服电机 指令脉冲+方向位置控制模式 主从定时器 实现PWM脉冲数精确控制

实验室有个项目涉及到多个步进电机以及伺服电机的控制,需要电机得到一个触发信号后精确移动一段距离。 下面以单个伺服电机控制为例,利用伺服电机的指令脉冲加方向位置控制模式实现jing'que ...

phcdd的博客 2万+

优化Cartographer重定位速度:从子图筛选到参数调优的完整思路

本文详细介绍了优化Cartographer重定位速度的完整方法,从子图筛选到参数调优,帮助工程师在已知初始位姿的前提下将重定位耗时降低50%以上。重点分析了性能瓶颈、子图筛选策略、匹配算法选择及环境自适应的参数优化策略,并通过实战案例展示了显著效果提升。

weixin_28704565的博客 464

【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

Visual Studio Community与Visual Studio Community与VS Code有啥区别

Visual Studio Code提供了基本的代码编辑、调试和版本控制功能,以及丰富的插件和扩展库。Visual Studio Community和Visual Studio Code在功能上有很大的差异,Visual Studio Community提供了比Visual Studio Code更多的功能,包括代码重构、智能提示、图形化设计等。他的优势在于它的轻量级和灵活性。此外,Visual Studio Code还具有丰富的扩展和插件生态系统,用户可以通过安装插件来扩展其功能,从而满足自己的需求。

m0_56551554的博客 2843

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!荣耀之路! 4463

Jetson Orin NX 单目标跟踪算法实战

本文对比了NanoTrack和MixFormerV2两种目标跟踪算法在Jetson Orin NX边缘设备上的实际表现。通过天空小目标跟踪场景测试发现,NanoTrack虽然表征能力较弱,但具有目标身份一致性强、失败模式可控、计算负担小等优势,更适合作为边缘端默认算法。MixFormerV2则适用于高速运动等特定场景。实验数据显示NanoTrack在Orin NX上可达200FPS,远高于MixFormerV2的38-120FPS。建议先采用NanoTrack构建稳定系统,后续再评估复杂算法的适用性。

karmueo46的博客 625

基于瑞芯微RK3562 四核 ARM Cortex-A53 + 单核 ARM Cortex-M0——Linux应用开发手册

本文主要介绍TL3562-MiniEVM评估板的AMP(Asymmetric Multi-processing)开发案例,介绍基于Linux + RT-Thread(RTOS)、Baremetal的AMP案例的开发环境搭建。

创龙,嵌入式一体化解决方案商 411

hdu 3533 搜索+预处理

广搜

zxf654073270的专栏 1143

openHarmony之AI Engine:万字讲解如何在应用、开发板上接入AI大模型调用

本文章介绍如何在 OpenHarmony 开发板上集成和部署各类 AI 大模型,实现终端直接聊天功能,并为语音助手、智能机器人等应用提供 AI 接口支持。

m0_67505153的博客 620

HDU3533Escape(BFS+预处理)

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

Stark_industry 244

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

计算机控制技术及应用

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

HDU 3533 Escape(BFS)

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

IuSpet的博客 387

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

HDU3533 Escape BFS

HDU3533 Escape BFS

htrdchh的博客 247

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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): 1792Accepte...

weixin_30325793的博客 73

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】

Escape Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2597    Accepted Submission(s): 754   Problem Description The students of the HEU a...

Emiya丶的博客 421

【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 485

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 (BFS

Escape Time Limit: 20000/10000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2462Accepted Submission(s): 716 Problem Description The students of the HEU...

diangan7073的博客 141

HDU3533Escape(BFS )

题意:要从(0,0)到(n,m)点,有四个移动的方向,初始时有一个能量,走一步消耗一个单位,能量为0还没到就是失败,同时,地图上有敌军的炮台,告诉你炮台的射击方向,这个方向是固定的,以及它每隔t秒朝该方向发射一个速度是v的炮弹,然后是炮台的坐标, 1.炮台可以挡住子弹,而不会被摧毁 2.炮弹对人的伤害只有人和炮弹在格点相遇 3.人物可以选择在某一个点停留一段时间 输入: n,m,k,d(n

qwesde 968

Escape HDU - 3533 (BFS)

Escape HDU - 3533 The students of the HEU are maneuvering for their military training. The red army and the blue army are at war today...

codeswarrior的博客 332

hdu3533Escape(bfs)

加一个时间维,暴力 #include&amp;lt;bits/stdc++.h&amp;gt; using namespace std; char mp[105][105][1005]; bool vis[105][105][1005]; int dx[5]={-1,1,0,0,0}; int dy[5]={0,0,-1,1,0}; const int INF=0x3f3f3f3f; int m,n,k,d; s...

IDrandom的专栏 192

HDU 3533 Escape(bfs)

Escape Time Limit: 20000/10000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 598Accepted Submission(s): 153 Problem Description The students of the ...

dizhuo0219的博客 200
上一篇: HDU - 3567 Eight II 【bfs打表+映射+康托展开】
下一篇: HDU - 1560 DNA sequence 【迭代加深】
Y390d
博客等级 码龄9年 11粉丝 165原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值