BFS-hdu-3533-Escape

Blender建模:对于模型布线的一些思考 Blender布线中一些问题的总结和思考,主要讲述原理和解决方法。 阅读详情
题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=3533

题目大意:

给一个m*n的矩阵方格,有k门大炮,每门大炮以t为周期向c方向发射炮弹,炮弹速度为v.

求从(0,0)到(m,n)位置最短的时间,中间不能被炮弹打到,时间不能超过d.

解题思路:

预处理好后就是简单的BFS。

先预处理每个点能够被炮弹射击的所有时刻,然后用vis[x][y][t]判重,表示到达(x,y)位置时刻为t时是否被访问。

代码:

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#define eps 1e-6
#define INF 0x1f1f1f1f
#define PI acos(-1.0)
#define ll __int64
#define lson l,m,(rt<<1)
#define rson m+1,r,(rt<<1)|1
//#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;

/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
*/
bool iscan[120][120][1100]; //预处理所有点,不能停留的时间
bool cas[120][120]; //是否炮弹
bool vis[120][120][1100]; //是否被访问
int m,n,k,d,dir[5][2]={{-1,0},{0,1},{1,0},{0,-1},{0,0}}; //最后一个方向为呆在原地
map<char,int>myp;
char sa[5];

bool isin(int x,int y) //判断是否在网格里
{
   if(x<0||x>m||y<0||y>n)
      return false;
   return true;
}
struct Node
{
   int x,y,t;
   friend bool operator <(const Node & a,const Node & b)
   {
      return a.t>b.t;
   }
};
struct Bome
{
   int x,y,t,v;
   char sa[5];
}bom[110];

void bfs()
{
   memset(vis,false,sizeof(vis));
   Node s;
   s.x=0,s.y=0,s.t=0;
   priority_queue<Node>myq; //以时间为优先因素
   myq.push(s);
   vis[0][0][0]=true;
   while(!myq.empty())
   {
      Node cur=myq.top();
      myq.pop();
      for(int i=0;i<5;i++)
      {
         int x=cur.x+dir[i][0],y=cur.y+dir[i][1];
         int t=cur.t+1;
         if(!isin(x,y)||cas[x][y]||vis[x][y][t])
            continue;
         if(!iscan[x][y][t]||t>d)
            continue;
         if(x==m&&y==n)
         {
            printf("%d\n",t);
            return ;
         }
         vis[x][y][t]=true;
         Node tmp;
         tmp.x=x,tmp.y=y,tmp.t=t;
         myq.push(tmp);
      }
   }
   printf("Bad luck!\n");
}

int main()
{
   int x,y,t,v;
   myp['N']=0,myp['E']=1,myp['S']=2,myp['W']=3;
   while(scanf("%d%d%d%d",&m,&n,&k,&d)!=EOF)
   {
      memset(iscan,true,sizeof(iscan));
      memset(cas,false,sizeof(cas));
      for(int i=1;i<=k;i++)
      {
         scanf("%s%d%d%d%d",bom[i].sa,&bom[i].t,&bom[i].v,&bom[i].x,&bom[i].y);
         cas[bom[i].x][bom[i].y]=true;
      }
      for(int i=1;i<=k;i++)
      {
         x=bom[i].x,y=bom[i].y,v=bom[i].v,t=bom[i].t;
         strcpy(sa,bom[i].sa);
         int dd=myp[*sa],xx,yy,sumt=0;
         while(true)
         {
            sumt++; //枚举时间
            xx=x+dir[dd][0]*v*sumt,yy=y+dir[dd][1]*v*sumt; //到达的位置
            if(!isin(xx,yy)) //跑到了外面
               break;
            bool flag=true;
            for(int j=0;j<v;j++) //这之间是否有大炮
            {
               if(cas[xx-j*dir[dd][0]][yy-j*dir[dd][1]])
               {
                  flag=false; //如果有 则这门大炮到此无用
                  break;
               }
            }
            if(!flag)
               break;
            int tmpt=sumt;
            while(tmpt<=d) //大炮是周期性,所以每隔t时间,又有一门大炮射来
            {
               iscan[xx][yy][tmpt]=false;
               tmpt+=t;
            }
         }
      }
      bfs();
   }
   return 0;
}


使用广播星历进行 GPS 卫星位置的计算 目录1.计算卫星运动的平均角速度 n2.计算观测瞬间卫星的近地点角3.计算偏近点角4.计算真近点角 f5.计算升交角距 6.计算摄动改正项7.进行摄动改正 8.计算卫星在轨道面坐标系中的位置9.计算观测瞬间升交点的经度 L10.计算卫星在瞬时地球坐标系中的位置11.计算卫星在协议地球坐标系中的位置使用广播星历进行GPS卫星位置的计算的详细步骤如下:关于在广播星历中各参数的分布情况可以参考下图:首先根据广播星历中给出的参数 计算参考时刻(TOE) 的平均角速度 式中,GM为万有引力常数 G 与地球总质量 阅读详情

相关推荐

antiSMASH安装与使用

antiSMASH本地安装 简要: antiSMASH的本地安装需要安装很多的依赖包,本文章使用conda辅助安装 参考: 官方:https://docs.antismash.secondarymetabolites.org/install/ 文章:http://blog.sciencenet.cn/blog-3416913-1240614.html 依赖包下载 conda install -y diamond=0.8.36 conda install -y fasttree=2.1.9 conda ins

Curry_chenhu的博客 7224

HDU3533Escape(BFS+预处理)

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

Stark_industry 244

ANSYS Workbench瞬态结构分析(1)时域分析

本文围绕瞬态结构分析展开。首先阐释其概念与理论基础,涵盖控制方程及数值求解方法。接着详述在 ANSYS Workbench 中进行瞬态分析的操作流程,以音叉为例,介绍从创建分析系统、材料定义、几何处理与网格划分,到边界条件与载荷设置、求解器设置及结果后处理的各步骤。之后对分析结果进行探讨,并针对计算不收敛、计算时间过长等常见问题给出调试技巧,旨在为读者提供全面的瞬态结构分析知识与实践指导。

qq_58675332的博客 6528

HDU 3533 Escape(BFS)

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

IuSpet的博客 387

计数译码驱动显示电路实验报告_京东方G0A电路、阵列基板、显示 装置及驱动方法广州威彩...

图1、实施例二所述的选择子单元的结构示意图图2、实施例四所述的GOA电路结构示意图图3、实施例七所述的阵列基板的局部结构示意图图4、实施例所述的极性反转驱动方法的第一场的各信号时序图图5、实施例所述的极性反转驱动方法的第二场的各信号时序图图6、实施例所述的极性反转驱动方法的第三场的各信号时序图图7、实施例所述的极性反转驱动方法的第四场的各信号时序图图8、为图4所示时序下,实施例八所述显示...

weixin_35696112的博客 924

STM32硬件SPI调试ADS1256的3个致命坑,CubeMX配置避坑指南

本文深入解析STM32硬件SPI调试ADS1256高精度ADC芯片时常见的3大配置陷阱,包括SPI时钟频率、时钟极性与相位、数据字节序等关键问题。通过CubeMX实战配置指南和实测数据对比,提供稳定可靠的解决方案,帮助开发者避免常见错误,提升采样精度和系统稳定性。

weixin_42550597的博客 346

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

33、嵌入式系统中的内存操作与实时操作系统

本博客详细探讨了嵌入式系统中的内存操作和实时操作系统(RTOS)的基本原理及应用。内容涵盖C、C++和MicroPython三种语言下的SDRAM读写示例,并结合机器人真空吸尘器的实际应用说明内存的使用场景。此外,还介绍了RTOS的核心概念、组件及其工作机制,包括任务、事件、互斥锁、信号量、队列等,并以FreeRTOS和Mbed OS为例展示了RTOS的配置与使用方法。最后,通过常见问题和实践项目加深对嵌入式系统开发的理解。

zz67890的博客 144

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的博客 317

【python】懂车帝字体反爬逐层解密案例(附完整代码)

懂车帝字体反爬解密,完整代码分享

景天科技苑 2万+

告别 DIFY 构建卡顿 / 失败!巧用 Makefile 一键构建本地 WEB 镜像,附核心避坑指南

本文详细介绍了DIFY本地源码构建WEB镜像的完整流程,重点解决因官方npm源不稳定导致的构建失败问题。通过修改web/Dockerfile文件启用国内npmmirror镜像源,可大幅提升依赖下载速度和稳定性。在DIFY根目录执行封装好的make build-web命令即可一键完成构建,无需手动编写复杂docker命令。文章还提供了前置环境准备、构建结果验证等实用指导,帮助开发者高效完成DIFY前端二次开发后的镜像构建验证。

2501_93651177的博客 181

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

SSH 远程登录报错:kex_exchange_identification: Connection closed.....

不知道为啥会出现这样的情形,最近这段时间登录都是正常的,不知道哪里抽风了,就提示这个。错误信息 kex_exchange_identification: Connection closed by remote host 出现在尝试使用 SSH 连接到远程服务器过程中,表明在密钥交换阶段的一开始,远程主机就关闭了连接。服务器的sshd_config文件中配置错误,可能是不允许的加密算法、修订文件中的语法错误,或者未正确指定用于SSH的HostKey。如果当前已有太多活动连接,新的连接尝试可能会被拒绝。

飞越蓝天的专栏 8296

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

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

计算机控制技术及应用

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

HDU3533 Escape BFS

HDU3533 Escape BFS

htrdchh的博客 247

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

HDU 3533 Escape 预处理+bfs

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

WA是一笔财富 401

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 484

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

【HDU - 3533】Escape(bfs)

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

橘嘉禾 193

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
上一篇: 简单概率dp-hdu-4487-Maximum Random Walk
下一篇: 概率dp-poj-2096-Collecting Bugs
Accagain
博客等级 码龄14年 376粉丝 316原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值